Class: Fluent::Log::ConsoleAdapter

Inherits:
Console::Terminal::Logger
  • Object
show all
Defined in:
lib/fluent/log/console_adapter.rb

Overview

Async gem which is used by http_server helper switched logger mechanism to Console gem which isn’t complatible with Ruby’s standard Logger (since v1.17). This class adapts it to Fluentd’s logger mechanism.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(logger) ⇒ ConsoleAdapter

Returns a new instance of ConsoleAdapter.



36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/fluent/log/console_adapter.rb', line 36

def initialize(logger)
  @logger = logger
  # When `verbose` is `true`, following items will be added as a prefix or
  # suffix of the subject:
  #   * Severity
  #   * Object ID
  #   * PID
  #   * Time
  # Severity and Time are added by Fluentd::Log too so they are redundant.
  # PID is the worker's PID so it's also redundant.
  # Object ID will be too verbose in usual cases.
  # So set it as `false` here to suppress redundant items.
  super(StringIO.new, verbose: false)
end

Class Method Details

.wrap(logger) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'lib/fluent/log/console_adapter.rb', line 25

def self.wrap(logger)
  _, level = Console::Logger::LEVELS.find { |key, value|
    if logger.level <= 0
      key == :debug
    else
      value == logger.level - 1
    end
  }
  Console::Logger.new(ConsoleAdapter.new(logger), level: level)
end

Instance Method Details

#call(subject = nil, *arguments, name: nil, severity: 'info', **options, &block) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/fluent/log/console_adapter.rb', line 51

def call(subject = nil, *arguments, name: nil, severity: 'info', **options, &block)
  if LEVEL_TEXT.include?(severity.to_s)
    level = severity
  else
    @logger.warn("Unknown severity: #{severity}")
    level = 'warn'
  end

  @io.seek(0)
  @io.truncate(0)
  super
  @logger.send(level, @io.string.chomp)
end