Class: OpenTrace::LogForwarder

Inherits:
Logger
  • Object
show all
Defined in:
lib/opentrace/log_forwarder.rb

Overview

Minimal Logger-compatible class that forwards log messages to OpenTrace. Designed to be used as a broadcast target with Rails 7.1+ BroadcastLogger. Does NOT wrap another logger — its only job is to forward to OpenTrace.

Constant Summary collapse

SEVERITY_MAP =
{
  ::Logger::DEBUG   => "DEBUG",
  ::Logger::INFO    => "INFO",
  ::Logger::WARN    => "WARN",
  ::Logger::ERROR   => "ERROR",
  ::Logger::FATAL   => "FATAL",
  ::Logger::UNKNOWN => "UNKNOWN"
}.freeze

Instance Method Summary collapse

Constructor Details

#initializeLogForwarder

Returns a new instance of LogForwarder.



19
20
21
22
23
24
25
26
27
# File 'lib/opentrace/log_forwarder.rb', line 19

def initialize
  super(nil)
  # Match OpenTrace's min_level so BroadcastLogger doesn't downgrade
  # the effective log level for the entire app. Without this, having
  # level=DEBUG here causes BroadcastLogger.level to drop to DEBUG,
  # which forces evaluation of all debug blocks and processing of all
  # debug messages across ALL broadcast targets — even in production.
  self.level = OpenTrace.config.logger_severity
end

Instance Method Details

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



29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/opentrace/log_forwarder.rb', line 29

def add(severity, message = nil, progname = nil, &block)
  severity ||= ::Logger::UNKNOWN
  return true if severity < level

  msg = resolve_message(message, progname, &block)
  return true if msg.nil? || (msg.is_a?(String) && msg.strip.empty?)

  level_str = SEVERITY_MAP.fetch(severity, "UNKNOWN")
  OpenTrace.log(level_str, msg.to_s)

  true
rescue StandardError
  true
end

#closeObject



44
45
46
# File 'lib/opentrace/log_forwarder.rb', line 44

def close
  # no-op — nothing to close
end