Class: Fancybox2::Logger::Multi

Inherits:
Object
  • Object
show all
Defined in:
lib/fancybox2/logger/multi.rb

Overview

Log on multiple loggers at the same time

Usage example:

file_logger = Logger.new(File.open(“log/debug.log”, “a”)) stdout_logger = Logger.new(STDOUT) Create a logger that logs both to STDOUT and log_file at the same time with ‘info’ loglevel multi_logger = Fancybox2::Logger::Multi.new(file_logger, stdout_logger, level: :info))

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Multi

logger_1, logger_2, … , level: nil, loggers: nil, escape_data: true)



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/fancybox2/logger/multi.rb', line 19

def initialize(*args)
  options = args.extract_options.deep_symbolize_keys
  loggers = args
  if !loggers.is_a?(Array) || loggers.size.zero?
    raise ArgumentError.new("provide at least one logger instance")
  end

  @level = normalize_log_level(options[:level])
  @escape_data = options[:escape_data] || false
  @progname = options[:progname]

  self.loggers = loggers
  # Set properties
  # Override Loggers levels only if explicitly required
  self.level = @level if options[:level] # Do not use @level because it has already been processed
  # Override Logger's Formatter only if explicitly required
  self.escape_data = @escape_data if @escape_data
  self.progname = @progname if @progname

  define_methods
end

Instance Attribute Details

#escape_dataObject

Returns the value of attribute escape_data.



16
17
18
# File 'lib/fancybox2/logger/multi.rb', line 16

def escape_data
  @escape_data
end

#levelObject

Returns the value of attribute level.



16
17
18
# File 'lib/fancybox2/logger/multi.rb', line 16

def level
  @level
end

#loggersObject

Returns the value of attribute loggers.



16
17
18
# File 'lib/fancybox2/logger/multi.rb', line 16

def loggers
  @loggers
end

#prognameObject

Returns the value of attribute progname.



16
17
18
# File 'lib/fancybox2/logger/multi.rb', line 16

def progname
  @progname
end

Instance Method Details

#add(level, *args) ⇒ Object Also known as: log



41
42
43
# File 'lib/fancybox2/logger/multi.rb', line 41

def add(level, *args)
  @loggers.each { |logger| logger.add(level, *args) }
end

#add_logger(logger) ⇒ Object



46
47
48
# File 'lib/fancybox2/logger/multi.rb', line 46

def add_logger(logger)
  @loggers << logger
end

#closeObject



50
51
52
# File 'lib/fancybox2/logger/multi.rb', line 50

def close
  @loggers.map(&:close)
end

#default_log_levelObject



54
55
56
# File 'lib/fancybox2/logger/multi.rb', line 54

def default_log_level
  'info'
end