# File lib/paul_bunyan/log_relayer.rb, line 27 def primary_logger loggers[0] end
class PaulBunyan::LogRelayer
Constants
- DELEGATED_METHODS
delegate non-relayed methods to the primary logger
Attributes
loggers[R]
Public Class Methods
new()
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 44 def initialize @loggers = [] end
Public Instance Methods
<<(msg)
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 56 def <<(msg) loggers.reduce(nil) do |memo, logger| n = logger << msg # this would be simpler with an array, but would generate unnecessary garbage if memo.nil? || n.nil? memo || n else memo < n ? memo : n end end end
add(severity, message = nil, progname = nil, &block)
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 48 def add(severity, message = nil, progname = nil, &block) block = memoized_block(&block) if block loggers.reduce(true) do |memo, logger| logger.add(severity, message, progname, &block) && memo end end
Also aliased as: log
add_logger(logger)
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 35 def add_logger(logger) loggers.push(logger) logger end
add_metadata(metadata)
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 143 def add_metadata(metadata) messaging_loggers(:add_metadata, metadata) end
clear_metadata!()
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 147 def clear_metadata! messaging_loggers(:clear_metadata!) end
current_metadata()
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 151 def current_metadata loggers.inject({}) do |agg, logger| if logger.respond_to?(:current_metadata) agg.merge(logger.current_metadata) else agg end end end
debug(progname = nil, &block)
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 69 def debug(progname = nil, &block) add(DEBUG, nil, progname, &block) end
error(progname = nil, &block)
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 81 def error(progname = nil, &block) add(ERROR, nil, progname, &block) end
fatal(progname = nil, &block)
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 85 def fatal(progname = nil, &block) add(FATAL, nil, progname, &block) end
flush()
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 132 def flush messaging_loggers(:flush) end
info(progname = nil, &block)
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 73 def info(progname = nil, &block) add(INFO, nil, progname, &block) end
level()
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 93 def level logger = loggers.min { |a, b| a.level <=> b.level } logger.nil? ? DEBUG : logger.level end
primary_logger()
click to toggle source
remove_logger(logger)
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 40 def remove_logger(logger) loggers.delete(logger) end
remove_metadata(metadata)
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 161 def remove_metadata(metadata) messaging_loggers(:remove_metadata, metadata) end
secondary_loggers()
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 31 def secondary_loggers loggers[1..-1] || [] end
silence(level = Logger::ERROR, &block)
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 98 def silence(level = Logger::ERROR, &block) loggers = self.loggers.select { |l| l.respond_to?(:silence) }.reverse silencer = proc do logger = loggers.pop if logger logger.silence(level, &silencer) else block.call end end silencer.call end
tagged(*tags) { |self| ... }
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 136 def tagged(*tags) new_tags = push_tags(*tags) yield self ensure pop_tags(new_tags.size) end
unknown(progname = nil, &block)
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 89 def unknown(progname = nil, &block) add(UNKNOWN, nil, progname, &block) end
warn(progname = nil, &block)
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 77 def warn(progname = nil, &block) add(WARN, nil, progname, &block) end
with_metadata(metadata) { || ... }
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 165 def with_metadata(metadata) add_metadata(metadata) yield ensure remove_metadata(metadata) end
Private Instance Methods
memoized_block(&block)
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 174 def memoized_block(&block) called = false result = nil proc do next result if called called = true result = block.call end end
messaging_loggers(required_method, *args)
click to toggle source
# File lib/paul_bunyan/log_relayer.rb, line 184 def messaging_loggers(required_method, *args) loggers.each { |l| l.public_send(required_method, *args) if l.respond_to?(required_method) } nil end