class Logger::Logging::Factory

Attributes

env[R]

Public Class Methods

call(env = nil) click to toggle source
# File lib/logger/logging/factory.rb, line 9
def self.call env = nil
  env ||= ENV
  instance = new env
  instance.()
end
new(env) click to toggle source
# File lib/logger/logging/factory.rb, line 5
def initialize env
  @env = env
end

Public Instance Methods

call() click to toggle source
# File lib/logger/logging/factory.rb, line 15
def call
  logger = logger_class.new device
  logger.level = level
  logger
end
coloring?() click to toggle source
# File lib/logger/logging/factory.rb, line 50
def coloring?
  return @coloring unless @coloring.nil?
  @coloring =
    begin
      use_colors = env.fetch "LOG_COLOR" do
        if device.tty? then "on" else "off" end
      end
      use_colors == "on"
    end
end
device() click to toggle source
# File lib/logger/logging/factory.rb, line 21
def device
  @device ||=
    begin
      path = env.fetch "LOG_DEVICE" do "/dev/stdout" end
      if path.is_a? String then File.open path, "a" else path end
    end
end
level() click to toggle source
# File lib/logger/logging/factory.rb, line 29
def level
  @level ||=
    begin
      level_name = env.fetch "LOG_LEVEL" do "WARN" end
      level_name = level_name.upcase

      if Logger.const_defined? level_name
        Logger.const_get level_name
      else
        {
          "DATA" => -2,
          "TRACE" => -1,
        }.fetch level_name
      end
    end
end
logger_class() click to toggle source
# File lib/logger/logging/factory.rb, line 46
def logger_class
  if coloring? then ColoredLogger else ExtendedLogger end
end