Class: Facter::MultiLogger

Inherits:
Logger
  • Object
show all
Defined in:
lib/framework/logging/multilogger.rb

Overview

MultiLogger is an implementation of Ruby logging which can tee the log to multiple endpoints. This class reeks of :reek:TooManyMethods.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(loggers) ⇒ MultiLogger

Synopsis

MultiLogger.new([logger1, logger2])

Args

loggers

An array of loggers. Each one gets every message that is sent to the MultiLogger instance.

Description

Create an instance.



85
86
87
# File 'lib/framework/logging/multilogger.rb', line 85

def initialize(loggers)
  @loggers = loggers
end

Instance Attribute Details

#loggersObject (readonly)

Array of loggers to be logged to. These can be anything that acts reasonably like a Logger.



11
12
13
# File 'lib/framework/logging/multilogger.rb', line 11

def loggers
  @loggers
end

Instance Method Details

#add(severity, message = nil, progname = nil, &block) ⇒ Object Also known as: log

Methods that write to logs just write to each contained logging in turn



94
95
96
# File 'lib/framework/logging/multilogger.rb', line 94

def add(severity, message = nil, progname = nil, &block)
  loggers.each { |logger| logger.add(severity, message, progname, &block) }
end

#add_logger(logger) ⇒ Object



89
90
91
# File 'lib/framework/logging/multilogger.rb', line 89

def add_logger(logger)
  @loggers << logger
end

#closeObject



115
116
117
# File 'lib/framework/logging/multilogger.rb', line 115

def close
  loggers.each(&:close)
end

#datetime_formatObject

Returns the date format being used. See #datetime_format=



42
43
44
# File 'lib/framework/logging/multilogger.rb', line 42

def datetime_format
  loggers.first.datetime_format
end

#datetime_format=(datetime_format) ⇒ Object

Set date-time format.

datetime_format

A string suitable for passing to strftime.



37
38
39
# File 'lib/framework/logging/multilogger.rb', line 37

def datetime_format=(datetime_format)
  loggers.each { |logger| logger.datetime_format = datetime_format }
end

#debug(progname = nil, &block) ⇒ Object



99
100
101
# File 'lib/framework/logging/multilogger.rb', line 99

def debug(progname = nil, &block)
  loggers.each { |logger| logger.debug(progname, &block) }
end

#debug?Boolean

Returns true if the current severity level allows for the printing of DEBUG messages.

Returns:

  • (Boolean)


48
49
50
# File 'lib/framework/logging/multilogger.rb', line 48

def debug?
  loggers.first.level <= DEBUG
end

#error(progname = nil, &block) ⇒ Object



111
112
113
# File 'lib/framework/logging/multilogger.rb', line 111

def error(progname = nil, &block)
  loggers.each { |logger| logger.error(progname, &block) }
end

#error?Boolean

Returns true iff the current severity level allows for the printing of ERROR messages.

Returns:

  • (Boolean)


66
67
68
# File 'lib/framework/logging/multilogger.rb', line 66

def error?
  loggers.first.level <= ERROR
end

#info(progname = nil, &block) ⇒ Object



103
104
105
# File 'lib/framework/logging/multilogger.rb', line 103

def info(progname = nil, &block)
  loggers.each { |logger| logger.info(progname, &block) }
end

#info?Boolean

Returns true iff the current severity level allows for the printing of INFO messages.

Returns:

  • (Boolean)


54
55
56
# File 'lib/framework/logging/multilogger.rb', line 54

def info?
  loggers.first.level <= INFO
end

#levelObject

Logging severity threshold (e.g. Logger::INFO).



18
19
20
# File 'lib/framework/logging/multilogger.rb', line 18

def level
  loggers.first.level
end

#level=(value) ⇒ Object



22
23
24
# File 'lib/framework/logging/multilogger.rb', line 22

def level=(value)
  loggers.each { |logger| logger.level = value }
end

#prognameObject

Program name to include in log messages.



27
28
29
# File 'lib/framework/logging/multilogger.rb', line 27

def progname
  loggers.first.progname
end

#progname=(value) ⇒ Object



31
32
33
# File 'lib/framework/logging/multilogger.rb', line 31

def progname=(value)
  loggers.each { |logger| logger.progname = value }
end

#warn(progname = nil, &block) ⇒ Object



107
108
109
# File 'lib/framework/logging/multilogger.rb', line 107

def warn(progname = nil, &block)
  loggers.each { |logger| logger.warn(progname, &block) }
end

#warn?Boolean

Returns true iff the current severity level allows for the printing of WARN messages.

Returns:

  • (Boolean)


60
61
62
# File 'lib/framework/logging/multilogger.rb', line 60

def warn?
  loggers.first.level <= WARN
end