lib/log_tribe/loggers.rb in log_tribe-0.2.9 vs lib/log_tribe/loggers.rb in log_tribe-0.2.10
- old
+ new
@@ -9,10 +9,11 @@
# See #level
def level=(value)
@level = value
@loggers.each do |logger|
+ next unless logger
logger.level = value if logger.respond_to?(:level)
end
end
# Program name to include in log messages.
@@ -20,10 +21,11 @@
# See #progname
def progname=(value)
@progname = value
@loggers.each do |logger|
+ next unless logger
logger.progname = value if logger.respond_to?(:progname)
end
end
# Returns the date format being used. See #datetime_format=
@@ -33,10 +35,11 @@
#
# +datetime_format+:: A string suitable for passing to +strftime+.
def datetime_format=(datetime_format)
@datetime_format = datetime_format
@loggers.each do |logger|
+ next unless logger
logger.datetime_format = datetime_format if logger.respond_to?(:datetime_format)
end
end
# Logging formatter, as a +Proc+ that will take four arguments and
@@ -55,10 +58,11 @@
# See #formatter
def formatter=(callable)
@formatter = callable
@loggers.each do |logger|
+ next unless logger
logger.formatter = callable if logger.respond_to?(:formatter)
end
end
# See ::Logger#Formatter
@@ -138,10 +142,11 @@
# * Append open does not need to lock file.
# * If the OS supports multi I/O, records possibly may be mixed.
#
def add(severity, message = nil, progname = nil, &block)
@loggers.each do |logger|
+ next unless logger
if logger.respond_to?(:add)
logger.add(severity, message, progname, &block)
elsif defined?(::Fluent::Logger) && logger.respond_to?(:post)
# FluentLogger
logger.post(@tag_name || 'none'.freeze,
@@ -156,10 +161,11 @@
# Dump given message to the log device without any formatting. If no log
# device exists, return +nil+.
#
def <<(msg)
@loggers.each do |logger|
+ next unless logger
if logger.respond_to?(:<<)
logger << msg
elsif defined?(::Fluent::Logger) && logger.respond_to?(:post)
# FluentLogger
logger.post(@tag_name || 'none'.freeze, message: msg)
@@ -170,10 +176,14 @@
#
# Close the logging devices.
#
def close
@loggers.each do |logger|
- logger.close if logger.respond_to?(:close)
+ next unless logger
+ log_device = logger.instance_variable_get('@logdev')
+ next unless log_device
+ log_device.flush if log_device.respond_to?(:flush)
+ logger.close if log_device.respond_to?(:stat)
end
end
end
end