Class: LogStashLogger::MultiLogger

Inherits:
Logger
  • Object
show all
Defined in:
lib/logstash-logger/multi_logger.rb

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.



91
92
93
94
95
# File 'lib/logstash-logger/multi_logger.rb', line 91

def initialize(loggers)
  @loggers = []
  super(nil)
  @loggers = Array(loggers)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object

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



69
70
71
72
73
74
75
# File 'lib/logstash-logger/multi_logger.rb', line 69

def method_missing(name, *args, &block)
  @loggers.each do |logger|
    if logger.respond_to?(name)
      logger.send(name, args, &block)
    end
  end
end

Instance Attribute Details

#loggersObject

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



5
6
7
# File 'lib/logstash-logger/multi_logger.rb', line 5

def loggers
  @loggers
end

Instance Method Details

#<<(msg) ⇒ Object



104
105
106
107
108
# File 'lib/logstash-logger/multi_logger.rb', line 104

def <<(msg)
  @loggers.each do |logger|
    logger << msg
  end
end

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

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



98
99
100
101
102
# File 'lib/logstash-logger/multi_logger.rb', line 98

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

#closeObject



146
147
148
149
150
# File 'lib/logstash-logger/multi_logger.rb', line 146

def close
  @loggers.each do |logger|
    logger.close if logger.respond_to?(:close)
  end
end

#datetime_format=(datetime_format) ⇒ Object



21
22
23
24
25
26
# 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) ⇒ Object



110
111
112
113
114
# File 'lib/logstash-logger/multi_logger.rb', line 110

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

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



128
129
130
131
132
# File 'lib/logstash-logger/multi_logger.rb', line 128

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

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



134
135
136
137
138
# File 'lib/logstash-logger/multi_logger.rb', line 134

def fatal(progname = nil, &block)
  @loggers.each do |logger|
    logger.fatal(progname, &block)
  end
end

#formatter=(formatter) ⇒ Object



28
29
30
31
32
# File 'lib/logstash-logger/multi_logger.rb', line 28

def formatter=(formatter)
  @loggers.each do |logger|
    logger.formatter ||= formatter
  end
end

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



116
117
118
119
120
# File 'lib/logstash-logger/multi_logger.rb', line 116

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

#level=(value) ⇒ Object



7
8
9
10
11
12
# File 'lib/logstash-logger/multi_logger.rb', line 7

def level=(value)
  super
  @loggers.each do |logger|
    logger.level = value
  end
end

#progname=(value) ⇒ Object



14
15
16
17
18
19
# 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) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/logstash-logger/multi_logger.rb', line 34

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) ⇒ Object



51
52
53
54
55
56
57
# File 'lib/logstash-logger/multi_logger.rb', line 51

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) ⇒ Object



140
141
142
143
144
# File 'lib/logstash-logger/multi_logger.rb', line 140

def unknown(progname = nil, &block)
  @loggers.each do |logger|
    logger.unknown(progname, &block)
  end
end

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



122
123
124
125
126
# File 'lib/logstash-logger/multi_logger.rb', line 122

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