class ExtendedLogger::Sink

Constants

Assertions

Attributes

device[RW]
levels[R]
rules[W]
serializer[R]

Public Class Methods

build(device=nil, color_scheme: nil, format: nil, levels: nil, rules: nil) click to toggle source
# File lib/extended_logger/sink.rb, line 14
def self.build device=nil, color_scheme: nil, format: nil, levels: nil, rules: nil
  device ||= $stderr
  levels ||= Defaults.levels

  device = File.open device, 'a+' if device.is_a? String
  device.sync = true

  if color_scheme == :none or not (device.tty? or device.is_a? StringIO)
    color_scheme = nil
  end

  serializer = Serializer.build log_format: format, color_scheme: color_scheme

  instance = new device, levels, serializer
  instance.rules = rules if rules
  instance
end
new(device, levels, serializer) click to toggle source
# File lib/extended_logger/sink.rb, line 8
def initialize device, levels, serializer
  @device = device
  @levels = levels
  @serializer = serializer
end

Public Instance Methods

<<(message) click to toggle source
# File lib/extended_logger/sink.rb, line 32
def << message
  message = apply_rules message

  verbosity_threshold.(message) or return

  output = serializer.(message)

  device.write output
end
apply_rules(message) click to toggle source
# File lib/extended_logger/sink.rb, line 42
def apply_rules message
  rules.reduce message do |message, rule|
    rule.(message) or return
  end
end
level() click to toggle source
# File lib/extended_logger/sink.rb, line 48
def level
  verbosity_threshold.level
end
level=(reference) click to toggle source
# File lib/extended_logger/sink.rb, line 52
def level= reference
  verbosity_threshold.level = levels.resolve reference
end
lower_verbosity() click to toggle source
# File lib/extended_logger/sink.rb, line 56
def lower_verbosity
  verbosity_threshold.lower
end
raise_verbosity() click to toggle source
# File lib/extended_logger/sink.rb, line 60
def raise_verbosity
  verbosity_threshold.raise
end
rules() click to toggle source
# File lib/extended_logger/sink.rb, line 64
def rules
  @rules ||= []
end
verbosity_threshold() click to toggle source
# File lib/extended_logger/sink.rb, line 68
def verbosity_threshold
  @verbosity_threshold ||= VerbosityThreshold.new levels.default
end