Class: CloseYourIt::Rails::LogBroadcast

Inherits:
Logger
  • Object
show all
Defined in:
lib/closeyourit/rails/log_broadcast.rb

Overview

Sink Logger-compatibile agganciato a Rails.logger (broadcast opt-in, config.capture_rails_logs): ogni log dell'app ≥ soglia (logs_min_level) viene re-inoltrato a CloseYourIt.log → ingest /logs. Sotto soglia: no-op (nessun invio). Non scrive su alcun device (inoltra soltanto).

Constant Summary collapse

SEVERITY_LEVELS =
{ 0 => "debug", 1 => "info", 2 => "warning", 3 => "error", 4 => "fatal", 5 => "fatal" }.freeze
LEVEL_BY_SYMBOL =
{ debug: 0, info: 1, warn: 2, warning: 2, error: 3, fatal: 4 }.freeze

Instance Method Summary collapse

Constructor Details

#initialize(min_level = :info) ⇒ LogBroadcast

Returns a new instance of LogBroadcast.



14
15
16
17
# File 'lib/closeyourit/rails/log_broadcast.rb', line 14

def initialize(min_level = :info)
  super(nil) # nessun device: inoltra soltanto
  self.level = LEVEL_BY_SYMBOL.fetch(min_level.to_sym, 1)
end

Instance Method Details

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

Sovrascrive il punto unico di ::Logger: filtra per soglia e re-inoltra a CloseYourIt.log.



20
21
22
23
24
25
26
27
# File 'lib/closeyourit/rails/log_broadcast.rb', line 20

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

  text = message || (block_given? ? yield : nil) || progname
  CloseYourIt.log(SEVERITY_LEVELS.fetch(severity, "info"), text) unless text.nil?
  true
end