Class: Tempest::DebugLog::Channel

Inherits:
Object
  • Object
show all
Defined in:
lib/tempest/debug_log.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(loggers:, defaults: {}) ⇒ Channel

Returns a new instance of Channel.



130
131
132
133
# File 'lib/tempest/debug_log.rb', line 130

def initialize(loggers:, defaults: {})
  @loggers = Array(loggers)
  @defaults = defaults.freeze
end

Instance Attribute Details

#loggersObject (readonly)

Returns the value of attribute loggers.



128
129
130
# File 'lib/tempest/debug_log.rb', line 128

def loggers
  @loggers
end

Instance Method Details

#closeObject



160
161
162
163
164
165
166
167
168
169
# File 'lib/tempest/debug_log.rb', line 160

def close
  @loggers.each do |logger|
    begin
      logger.close
    rescue StandardError
      # Best-effort: a half-built or already-closed logger should not
      # take down shutdown.
    end
  end
end

#debug(mod, event:, **fields) ⇒ Object



139
140
141
# File 'lib/tempest/debug_log.rb', line 139

def debug(mod, event:, **fields)
  emit(Logger::DEBUG, mod, event, fields)
end

#error(mod, event:, **fields) ⇒ Object



147
148
149
# File 'lib/tempest/debug_log.rb', line 147

def error(mod, event:, **fields)
  emit(Logger::ERROR, mod, event, fields)
end

#info(mod, event:, **fields) ⇒ Object



135
136
137
# File 'lib/tempest/debug_log.rb', line 135

def info(mod, event:, **fields)
  emit(Logger::INFO, mod, event, fields)
end

#warn(mod, event:, **fields) ⇒ Object



143
144
145
# File 'lib/tempest/debug_log.rb', line 143

def warn(mod, event:, **fields)
  emit(Logger::WARN, mod, event, fields)
end

#with(**default_fields) ⇒ Object

Returns a child channel that prepends ‘default_fields` to every subsequent log call. Used to attach per-session context such as `did=` to long-lived components (StreamManager, Watchdog) without sprinkling the field across every call site.



155
156
157
158
# File 'lib/tempest/debug_log.rb', line 155

def with(**default_fields)
  return self if default_fields.empty?
  Channel.new(loggers: @loggers, defaults: @defaults.merge(default_fields))
end