Class: ActionCable::Connection::TaggedLoggerProxy

Inherits:
Object
  • Object
show all
Defined in:
actioncable/lib/action_cable/connection/tagged_logger_proxy.rb

Overview

Позволяет использовать теги для каждого подключения к серверу логгера. Это не будет работать с использованием традиционного ActiveSupport::TaggedLogging расширенного Rails.logger, поскольку этот логгер сбрасывает теги между запросами. Соединение долговечное, поэтому требуется собственный набор тегов для его независимого пребывания.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(logger, tags:) ⇒ TaggedLoggerProxy


9
10
11
12
# File 'actioncable/lib/action_cable/connection/tagged_logger_proxy.rb', line 9

def initialize(logger, tags:)
  @logger = logger
  @tags = tags.flatten
end

Instance Attribute Details

#tagsObject (readonly)

Returns the value of attribute tags


7
8
9
# File 'actioncable/lib/action_cable/connection/tagged_logger_proxy.rb', line 7

def tags
  @tags
end

Instance Method Details

#add_tags(*tags) ⇒ Object


14
15
16
17
# File 'actioncable/lib/action_cable/connection/tagged_logger_proxy.rb', line 14

def add_tags(*tags)
  @tags += tags.flatten
  @tags = @tags.uniq
end

#tag(logger) ⇒ Object


19
20
21
22
23
24
25
26
# File 'actioncable/lib/action_cable/connection/tagged_logger_proxy.rb', line 19

def tag(logger)
  if logger.respond_to?(:tagged)
    current_tags = tags - logger.formatter.current_tags
    logger.tagged(*current_tags) { yield }
  else
    yield
  end
end