Class: Errlog::ChainLogger

Inherits:
Logger
  • Object
show all
Defined in:
lib/errlog/chain_loggger.rb

Overview

The chain logger is used to collect data for Errlog context (current context is used) and optionally pass through logs to previous logger (that’s why chain). Potential problem: you can not bound logger to some context instance so far. Leave issue at the github if you’ll need

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(prev = nil) ⇒ ChainLogger

Create instance optionally atop of an existing logger.



15
16
17
18
# File 'lib/errlog/chain_loggger.rb', line 15

def initialize prev=nil
  @prev_logger = prev
  super(nil)
end

Instance Attribute Details

#prev_loggerObject (readonly)

Returns previous logger instance if any.

Returns:

  • previous logger instance if any



12
13
14
# File 'lib/errlog/chain_loggger.rb', line 12

def prev_logger
  @prev_logger
end

Instance Method Details

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

Standard add log method, see (Logger#add)



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/errlog/chain_loggger.rb', line 31

def add severity, message = nil, progname = nil
  message = yield if block_given?
  if Errlog.rails_test?
    Rails.logger.add(severity, message, progname)
  else
    @prev_logger and @prev_logger.add(severity, message, progname)
  end
  # Rails.logger.info "- #{@prev_logger}: #{progname} ="
  #puts message #if Errlog.rails_test?
  Errlog.context.add_log_record [severity, Time.now, message, progname]
end

#levelObject

Returns current log level.

Returns:

  • current log level



26
27
28
# File 'lib/errlog/chain_loggger.rb', line 26

def level
  @prev_logger ? @prev_logger.level : super
end

#level=(l) ⇒ Object

Set log level



21
22
23
# File 'lib/errlog/chain_loggger.rb', line 21

def level= l
  @prev_logger and @prev_logger.level = l
end