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 (capture_rails_logs_min_level, default :warn) viene re-inoltrato a CloseYourIt.log → ingest /logs. Sotto soglia: no-op (nessun invio). Il default è conservativo (:warn) per non inondare lo stream col rumore info del framework (CYRB-7). 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 = :warn) ⇒ LogBroadcast

Returns a new instance of LogBroadcast.



16
17
18
19
# File 'lib/closeyourit/rails/log_broadcast.rb', line 16

def initialize(min_level = :warn)
  super(nil) # nessun device: inoltra soltanto
  self.level = LEVEL_BY_SYMBOL.fetch(min_level.to_sym, 2)
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.



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

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