Class: Lorekeeper::MultiLogger
- Inherits:
-
Object
- Object
- Lorekeeper::MultiLogger
show all
- Defined in:
- lib/lorekeeper/multi_logger.rb
Overview
Allows to create a logger that will pass information to any logger registered It is useful so send the same message through different loggers to different sinks
Instance Method Summary
collapse
-
#add_logger(logger) ⇒ Object
-
#call_loggers(method, *args, &block) ⇒ Object
-
#debug(*args, &block) ⇒ Object
Define all common logging methods within Multilogger to avoid NoMethodError.
-
#error(*args, &block) ⇒ Object
-
#fatal(*args, &block) ⇒ Object
-
#info(*args, &block) ⇒ Object
-
#initialize ⇒ MultiLogger
constructor
A new instance of MultiLogger.
-
#inspect ⇒ Object
-
#method_missing(method, *args, &block) ⇒ Object
-
#respond_to?(method, all_included: false) ⇒ Boolean
-
#warn(*args, &block) ⇒ Object
-
#write(*args) ⇒ Object
Constructor Details
Returns a new instance of MultiLogger.
7
8
9
|
# File 'lib/lorekeeper/multi_logger.rb', line 7
def initialize
@loggers = []
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
45
46
47
|
# File 'lib/lorekeeper/multi_logger.rb', line 45
def method_missing(method, *args, &block)
call_loggers(method, *args, &block)
end
|
Instance Method Details
#add_logger(logger) ⇒ Object
11
12
13
|
# File 'lib/lorekeeper/multi_logger.rb', line 11
def add_logger(logger)
@loggers << logger
end
|
#call_loggers(method, *args, &block) ⇒ Object
36
37
38
39
40
41
42
43
|
# File 'lib/lorekeeper/multi_logger.rb', line 36
def call_loggers(method, *args, &block)
result = @loggers.map do |logger|
logger.public_send(method, *args, &block) if logger.respond_to?(method)
end
result.compact.uniq.first
end
|
#debug(*args, &block) ⇒ Object
Define all common logging methods within Multilogger to avoid NoMethodError
20
|
# File 'lib/lorekeeper/multi_logger.rb', line 20
def debug(*args, &block); call_loggers(:debug, *args, &block); end
|
#error(*args, &block) ⇒ Object
26
|
# File 'lib/lorekeeper/multi_logger.rb', line 26
def error(*args, &block); call_loggers(:error, *args, &block); end
|
#fatal(*args, &block) ⇒ Object
28
|
# File 'lib/lorekeeper/multi_logger.rb', line 28
def fatal(*args, &block); call_loggers(:fatal, *args, &block); end
|
#info(*args, &block) ⇒ Object
22
|
# File 'lib/lorekeeper/multi_logger.rb', line 22
def info(*args, &block); call_loggers(:info, *args, &block); end
|
#inspect ⇒ Object
15
16
17
|
# File 'lib/lorekeeper/multi_logger.rb', line 15
def inspect
"Lorekeeper multilogger, loggers: #{@loggers.map(&:inspect)}"
end
|
#respond_to?(method, all_included: false) ⇒ Boolean
32
33
34
|
# File 'lib/lorekeeper/multi_logger.rb', line 32
def respond_to?(method, all_included: false)
@loggers.all? { |logger| logger.respond_to?(method, all_included) }
end
|
#warn(*args, &block) ⇒ Object
24
|
# File 'lib/lorekeeper/multi_logger.rb', line 24
def warn(*args, &block); call_loggers(:warn, *args, &block); end
|
#write(*args) ⇒ Object
30
|
# File 'lib/lorekeeper/multi_logger.rb', line 30
def write(*args); call_loggers(:write, *args); end
|