class Log

Attributes

device[W]

Public Class Methods

bare(subject) click to toggle source
# File lib/log/log.rb, line 64
def self.bare(subject)
  no_defaults(subject)
end
build(subject) click to toggle source
# File lib/log/log.rb, line 50
def self.build(subject)
  subject = subject_name(subject)
  instance = new(subject)
  Clock::UTC.configure(instance)
  set_defaults(instance)
  instance
end
configure(receiver, attr_name: nil) click to toggle source
# File lib/log/log.rb, line 68
def self.configure(receiver, attr_name: nil)
  attr_name ||= :logger
  instance = get(receiver)
  receiver.public_send("#{attr_name}=", instance)
  instance
end
inherited(cls) click to toggle source
# File lib/log/log.rb, line 16
def self.inherited(cls)
  cls.class_exec do
    dependency_module = Module.new do
      define_singleton_method :included do |reciever_class|
        reciever_class.class_exec do
          ::Dependency::Attribute.define(self, :logger, cls)

          define_method :logger do
            @logger ||= cls.configure self
          end
        end
      end
    end

    const_set :Dependency, dependency_module
  end
end
no_defaults(subject) click to toggle source
# File lib/log/log.rb, line 58
def self.no_defaults(subject)
  instance = new(subject)
  Clock::UTC.configure(instance)
  instance
end
set_defaults(logger) click to toggle source
# File lib/log/log.rb, line 109
def self.set_defaults(logger)
  logger.class.add_levels(logger)
  logger.level = Defaults.level
  logger.tags = Defaults.tags
end

Public Instance Methods

call(message=nil, level=nil, tag: nil, tags: nil, &blk) click to toggle source
# File lib/log/log.rb, line 75
def call(message=nil, level=nil, tag: nil, tags: nil, &blk)
  tag = Array(tag)
  tags = Array(tags)
  tags = tags + tag

  assure_level(level)

  tag!(tags)

  if write?(level, tags)
    if block_given?
      message = blk.call
    end
    raise ArgumentError, "Log message not provided" if message.nil?

    write(message, level, tags)
  end
end
clear() click to toggle source
# File lib/log/log.rb, line 102
def clear
  level_names.each do |level_name|
    remove_level(level_name)
  end
  self.level = nil
end
device() click to toggle source
# File lib/log/log.rb, line 42
def device
  @device ||= Defaults.device
end
tag!(tags) click to toggle source
# File lib/log/log.rb, line 94
def tag!(tags)
  tags
end
telemetry() click to toggle source
# File lib/log/log.rb, line 46
def telemetry
  @telemetry ||= ::Telemetry.build
end
write?(message_level, message_tags) click to toggle source
# File lib/log/log.rb, line 98
def write?(message_level, message_tags)
  write_level?(message_level) && write_tag?(message_tags)
end