class Logger::Joint

Constants

VERSION

Public Class Methods

new(primary_logger, secondary_logger) click to toggle source
# File lib/logger/joint.rb, line 24
def initialize(primary_logger, secondary_logger)
  self.class.respond_as_logger? primary_logger or raise TypeError, 'primary is not a logger.'
  self.class.respond_as_logger? secondary_logger or raise TypeError, 'secondary is not a logger.'
  @primary = primary_logger
  @secondary = secondary_logger
end
respond_as_logger?(object) click to toggle source

methods common to Logger and Syslog::Logger are need for.

# File lib/logger/joint.rb, line 7
def self.respond_as_logger?(object)
  [ :level,
    :add,
    :debug,
    :info,
    :warn,
    :error,
    :fatal,
    :unknown,
    :debug?,
    :info?,
    :warn?,
    :error?,
    :fatal?
  ].all?{|name| object.respond_to? name }
end

Public Instance Methods

add(*args, &block) click to toggle source
# File lib/logger/joint.rb, line 42
def add(*args, &block)
  apply_method(:add, *args, &block)
end
debug(*args, &block) click to toggle source
# File lib/logger/joint.rb, line 46
def debug(*args, &block)
  apply_method(:debug, *args, &block)
end
debug?() click to toggle source
# File lib/logger/joint.rb, line 75
def debug?
  apply_level_predicate(:debug?)
end
error(*args, &block) click to toggle source
# File lib/logger/joint.rb, line 58
def error(*args, &block)
  apply_method(:error, *args, &block)
end
error?() click to toggle source
# File lib/logger/joint.rb, line 87
def error?
  apply_level_predicate(:error?)
end
fatal(*args, &block) click to toggle source
# File lib/logger/joint.rb, line 62
def fatal(*args, &block)
  apply_method(:fatal, *args, &block)
end
fatal?() click to toggle source
# File lib/logger/joint.rb, line 91
def fatal?
  apply_level_predicate(:fatal?)
end
info(*args, &block) click to toggle source
# File lib/logger/joint.rb, line 50
def info(*args, &block)
  apply_method(:info, *args, &block)
end
info?() click to toggle source
# File lib/logger/joint.rb, line 79
def info?
  apply_level_predicate(:info?)
end
level() click to toggle source
# File lib/logger/joint.rb, line 31
def level
  [ @primary, @secondary ].map(&:level).min
end
unknown(*args, &block) click to toggle source
# File lib/logger/joint.rb, line 66
def unknown(*args, &block)
  apply_method(:unknown, *args, &block)
end
warn(*args, &block) click to toggle source
# File lib/logger/joint.rb, line 54
def warn(*args, &block)
  apply_method(:warn, *args, &block)
end
warn?() click to toggle source
# File lib/logger/joint.rb, line 83
def warn?
  apply_level_predicate(:warn?)
end

Private Instance Methods

apply_level_predicate(name) click to toggle source
# File lib/logger/joint.rb, line 70
def apply_level_predicate(name)
  @primary.__send__(name) || @secondary.__send__(name)
end
apply_method(name, *args, &block) click to toggle source
# File lib/logger/joint.rb, line 35
def apply_method(name, *args, &block)
  r = @primary.__send__(name, *args, &block)
  @secondary.__send__(name, *args, &block)
  r
end