class LogStashLogger::MultiLogger

Attributes

loggers[RW]

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

Public Class Methods

new(loggers) click to toggle source

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.

Calls superclass method
# File lib/logstash-logger/multi_logger.rb, line 92
def initialize(loggers)
  @loggers = []
  super(nil)
  @loggers = Array(loggers)
end

Public Instance Methods

<<(msg) click to toggle source
# File lib/logstash-logger/multi_logger.rb, line 105
def <<(msg)
  @loggers.each do |logger|
    logger << msg
  end
end
add(severity, message = nil, progname = nil, &block) click to toggle source

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

# File lib/logstash-logger/multi_logger.rb, line 99
def add(severity, message = nil, progname = nil, &block)
  @loggers.each do |logger|
    logger.add(severity, message, progname, &block)
  end
end
close() click to toggle source
# File lib/logstash-logger/multi_logger.rb, line 147
def close
  @loggers.each do |logger|
    logger.close if logger.respond_to?(:close)
  end
end
datetime_format=(datetime_format) click to toggle source
Calls superclass method
# File lib/logstash-logger/multi_logger.rb, line 21
def datetime_format=(datetime_format)
  super
  @loggers.each do |logger|
    logger.datetime_format = datetime_format
  end
end
debug(progname = nil, &block) click to toggle source
# File lib/logstash-logger/multi_logger.rb, line 111
def debug(progname = nil, &block)
  @loggers.each do |logger|
    logger.debug(progname, &block)
  end
end
error(progname = nil, &block) click to toggle source
# File lib/logstash-logger/multi_logger.rb, line 129
def error(progname = nil, &block)
  @loggers.each do |logger|
    logger.error(progname, &block)
  end
end
fatal(progname = nil, &block) click to toggle source
# File lib/logstash-logger/multi_logger.rb, line 135
def fatal(progname = nil, &block)
  @loggers.each do |logger|
    logger.fatal(progname, &block)
  end
end
formatter=(formatter) click to toggle source
Calls superclass method
# File lib/logstash-logger/multi_logger.rb, line 28
def formatter=(formatter)
  super
  @loggers.each do |logger|
    logger.formatter ||= formatter
  end
end
info(progname = nil, &block) click to toggle source
# File lib/logstash-logger/multi_logger.rb, line 117
def info(progname = nil, &block)
  @loggers.each do |logger|
    logger.info(progname, &block)
  end
end
level=(value) click to toggle source
Calls superclass method
# File lib/logstash-logger/multi_logger.rb, line 7
def level=(value)
  super
  @loggers.each do |logger|
    logger.level = value
  end
end
method_missing(name, *args, &block) click to toggle source

Any method not defined on standard Logger class, just send it on to anyone who will listen

# File lib/logstash-logger/multi_logger.rb, line 70
def method_missing(name, *args, &block)
  @loggers.each do |logger|
    if logger.respond_to?(name)
      logger.send(name, args, &block)
    end
  end
end
progname=(value) click to toggle source
Calls superclass method
# File lib/logstash-logger/multi_logger.rb, line 14
def progname=(value)
  super
  @loggers.each do |logger|
    logger.progname = value
  end
end
silence(temporary_level = ::Logger::ERROR, &block) click to toggle source
# File lib/logstash-logger/multi_logger.rb, line 35
def silence(temporary_level = ::Logger::ERROR, &block)
  silenceable_loggers = @loggers.select do |logger|
    logger.respond_to?(:silence)
  end

  silence_loggers(temporary_level, silenceable_loggers, &block)
end
tagged(*tags, &block) click to toggle source
# File lib/logstash-logger/multi_logger.rb, line 52
def tagged(*tags, &block)
  taggable_loggers = @loggers.select do |logger|
    logger.respond_to?(:tagged)
  end

  tag_loggers(tags, taggable_loggers, &block)
end
unknown(progname = nil, &block) click to toggle source
# File lib/logstash-logger/multi_logger.rb, line 141
def unknown(progname = nil, &block)
  @loggers.each do |logger|
    logger.unknown(progname, &block)
  end
end
warn(progname = nil, &block) click to toggle source
# File lib/logstash-logger/multi_logger.rb, line 123
def warn(progname = nil, &block)
  @loggers.each do |logger|
    logger.warn(progname, &block)
  end
end

Private Instance Methods

silence_loggers(temporary_level = ::Logger::ERROR, silenceable_loggers) { |self| ... } click to toggle source
# File lib/logstash-logger/multi_logger.rb, line 43
def silence_loggers(temporary_level = ::Logger::ERROR, silenceable_loggers, &block)
  return yield(self) if silenceable_loggers.empty?

  silenceable_loggers.shift.silence(temporary_level) do
    silence_loggers(temporary_level, silenceable_loggers, &block)
  end
end
tag_loggers(tags, taggable_loggers) { |self| ... } click to toggle source
# File lib/logstash-logger/multi_logger.rb, line 60
def tag_loggers(tags, taggable_loggers, &block)
  return yield(self) if taggable_loggers.empty?

  taggable_loggers.shift.tagged(*tags) do
    tag_loggers(tags, taggable_loggers, &block)
  end
end