Class: Logtide::LoggerBridge

Inherits:
Logger
  • Object
show all
Defined in:
lib/logtide/logger_bridge.rb

Overview

A drop-in stdlib Logger that routes records through LogTide (spec 004 section 7). Severities are mapped to the five LogTide levels and entries are enriched with the current scope.

logger = Logtide::LoggerBridge.new
logger.warn("disk almost full")

Constant Summary collapse

SEVERITY_MAP =
{
  ::Logger::DEBUG => "debug",
  ::Logger::INFO => "info",
  ::Logger::WARN => "warn",
  ::Logger::ERROR => "error",
  ::Logger::FATAL => "critical",
  ::Logger::UNKNOWN => "error"
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(hub: nil, level: ::Logger::DEBUG) ⇒ LoggerBridge

Returns a new instance of LoggerBridge.



22
23
24
25
26
# File 'lib/logtide/logger_bridge.rb', line 22

def initialize(hub: nil, level: ::Logger::DEBUG)
  super(nil)
  self.level = level
  @hub = hub
end

Instance Method Details

#add(severity, message = nil, progname = nil) ⇒ Object

rubocop:disable Naming/PredicateMethod



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/logtide/logger_bridge.rb', line 28

def add(severity, message = nil, progname = nil) # rubocop:disable Naming/PredicateMethod
  severity ||= ::Logger::UNKNOWN
  return true if severity < level

  if message.nil?
    if block_given?
      message = yield
    else
      message = progname
      progname = @progname
    end
  end

   = progname ? { "logger" => progname.to_s } : nil
  hub.capture_log(SEVERITY_MAP.fetch(severity, "info"), message.to_s, )
  true
end