Sha256: 4212f9461e28be9b73b178e9e89ed0e00a9207036ae6fbec559c19ee1db549d3
Contents?: true
Size: 1.96 KB
Versions: 3
Compression:
Stored size: 1.96 KB
Contents
# The MultiLogger allows to log messages not only to a file OR the stdout, # but to both or even more loggers at the same time. # The severity defaults to WARN but can be specified when instantiating the MultiLogger. # # log_1 = Logger.new(STDOUT) # log_2 = Logger.new(File.open('/tmp/foo')) # multi_logger = MultiLogger.new(:level => Logger::WARN, :loggers => log_1) # multi_logger.add_logger(log_2) # multi_logger.warn('Something interesting happened.') # # By Chris Lowder, see https://gist.github.com/clowder/3639600 class MultiLogger attr_reader :level # Initialize the MultiLogger, specify the severity level for all loggers # and add one or more loggers. # # @param [Hash] args the options to create a message with. # @option args [Integer] :level (2) The severity level # @option args [Array<Logger>] :loggers ([]) The loggers that are initially to be added # @return the object def initialize(args = {}) @level = args[:level] || Logger::Severity::WARN @loggers = [] Array(args[:loggers]).each { |logger| add_logger(logger) } end # Add a logger to the MultiLogger and adjust its level to the MultiLogger's current level. # # @param [Logger] logger the logger to add to the MultiLogger instance def add_logger(logger) logger.level = level @loggers << logger end # Adjust the MultiLogger's current level. # # @param [Integer] level the severity level to apply to the MultiLogger instance def level=(level) @level = level @loggers.each { |logger| logger.level = level } end # Close each Logger of the MultiLogger instance def close @loggers.map(&:close) end Logger::Severity.constants.each do |level| define_method(level.downcase) do |*args| @loggers.each { |logger| logger.send(level.downcase, args) } end define_method("#{level.downcase}?".to_sym) do @level <= Logger::Severity.const_get(level) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
nucleus-0.3.1 | lib/nucleus/core/common/logging/multi_logger.rb |
nucleus-0.2.0 | lib/nucleus/core/common/logging/multi_logger.rb |
nucleus-0.1.0 | lib/nucleus/core/common/logging/multi_logger.rb |