Class: MultipleDevicesLogger
- Inherits:
-
Logger
- Object
- Logger
- MultipleDevicesLogger
show all
- Includes:
- IgnoreExceptions
- Defined in:
- lib/multiple_devices_logger.rb,
lib/multiple_devices_logger/ignore_exceptions.rb
Defined Under Namespace
Modules: IgnoreExceptions
Constant Summary
collapse
- SEVERITIES =
{
'debug' => DEBUG,
'info' => INFO,
'warn' => WARN,
'error' => ERROR,
'fatal' => FATAL,
'unknown' => UNKNOWN,
}.freeze
Instance Attribute Summary collapse
Instance Method Summary
collapse
#exception_ignored?, #ignore_exceptions, #ignored_exception_classes, #ignored_exceptions_procs
Constructor Details
Returns a new instance of MultipleDevicesLogger.
19
20
21
22
|
# File 'lib/multiple_devices_logger.rb', line 19
def initialize
super(nil)
clear_devices
end
|
Instance Attribute Details
#default_device ⇒ Object
Returns the value of attribute default_device.
17
18
19
|
# File 'lib/multiple_devices_logger.rb', line 17
def default_device
@default_device
end
|
Instance Method Details
#add(severity, message = nil, progname = nil) ⇒ Object
Also known as:
log
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/multiple_devices_logger.rb', line 24
def add(severity, message = nil, progname = nil)
severity ||= UNKNOWN
return true if severity < level
progname ||= self.progname
if message.nil?
if block_given?
message = yield
else
message = progname
progname = self.progname
end
end
return false if exception_ignored?(message)
devices_for(severity).each do |device|
next if device.exception_ignored?(message)
formatter = device.formatter || self.formatter || @default_formatter
device.write(formatter.call(format_severity(severity), Time.now, progname, message))
end
true
end
|
#add_device(device, *severities) ⇒ Object
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/multiple_devices_logger.rb', line 46
def add_device(device, *severities)
severities = [severities].flatten
options = severities.last.is_a?(Hash) ? severities.pop : {}
formatter = nil
if options.key?(:formatter)
formatter = options.delete(:formatter)
raise ArgumentError.new("Formatter must respond to #call, #{formatter.inspect} given") unless formatter.respond_to?(:call)
end
ignored_exceptions = options.delete(:ignore_exceptions)
device = LogDevice.new(device, **options) unless device.is_a?(Logger::LogDevice)
device.formatter = formatter
device.ignore_exceptions(ignored_exceptions) if ignored_exceptions.present?
if severities.empty?
keys = SEVERITIES.values
else
keys = severities.map { |severity| parse_severities_with_operator(severity) }.flatten.uniq
end
keys.each do |key|
@devices[key] ||= []
@devices[key] << device
end
self
end
|
#clear_devices ⇒ Object
70
71
72
|
# File 'lib/multiple_devices_logger.rb', line 70
def clear_devices
@devices = {}
end
|
#devices_for(severity) ⇒ Object
78
79
80
|
# File 'lib/multiple_devices_logger.rb', line 78
def devices_for(severity)
@devices[parse_severity(severity)] || [default_device].compact || []
end
|
#level=(value) ⇒ Object
82
83
84
|
# File 'lib/multiple_devices_logger.rb', line 82
def level=(value)
super(parse_severity(value))
end
|
#reopen(_ = nil) ⇒ Object
86
87
88
|
# File 'lib/multiple_devices_logger.rb', line 86
def reopen(_ = nil)
raise NotImplementedError.new("#{self.class}#reopen")
end
|