class Patriot::Util::Logger::Log4rFactory

a logger factory implementation for Log4r logger

Constants

DEFAULT_LOG_FORMAT

default log format

DEFAULT_LOG_LEVEL

default log level

FORMAT_KEY

configuration key for log format

LOG_LEVEL_KEY

configuration key for log level

OUTPUTTERS_KEY

configuration key for log outputers

OUTPUTTER_KEY_PREFIX

configuration prefix for log outputer

Public Instance Methods

create_formatter(config) click to toggle source

create formatter based on the configuration

# File lib/patriot/util/logger/log4r_factory.rb, line 53
def create_formatter(config)
  log_format = get_format_config(config)
  formatter  = Log4r::PatternFormatter.new(:pattern => log_format)
  return formatter
end

Private Instance Methods

build(name, config) click to toggle source

@see Patriot::Util::Logger:Factory

# File lib/patriot/util/logger/log4r_factory.rb, line 28
def build(name, config)
  logger  = Log4r::Logger.new(name)
  logger  = set_log_level(logger, config)
  logger  = set_outputters(logger, config)
  return logger
end
get_format_config(_conf) click to toggle source

@private

# File lib/patriot/util/logger/log4r_factory.rb, line 69
def get_format_config(_conf)
  return _conf.get(FORMAT_KEY, DEFAULT_LOG_FORMAT)
end
get_log_level(_conf) click to toggle source

@private

# File lib/patriot/util/logger/log4r_factory.rb, line 61
def get_log_level(_conf)
  log_level = _conf.get(LOG_LEVEL_KEY, DEFAULT_LOG_LEVEL)
  log_level = eval("Log4r::#{log_level}")
  return log_level
end
get_outputter(outputter_id, _conf, _formatter) click to toggle source

@private

# File lib/patriot/util/logger/log4r_factory.rb, line 84
def get_outputter(outputter_id, _conf, _formatter)
  class_key = [OUTPUTTER_KEY_PREFIX, outputter_id, "class"].join(".") 
  class_name = _conf.get(class_key)
  raise "logger class: #{class_key} is not set" if class_name.nil?
  outputter = nil
  case class_name
  when "Log4r::StdoutOutputter"
    outputter = Log4r::Outputter.stdout
  when "Log4r::StderrOutputter"
    outputter = Log4r::Outputter.stderr
  when "Log4r::DateFileOutputter" 
    dir_key = [OUTPUTTER_KEY_PREFIX, outputter_id, "dir"].join(".") 
    file_key = [OUTPUTTER_KEY_PREFIX, outputter_id, "file"].join(".") 
    outputter = Log4r::DateFileOutputter.new("file", :filename => _conf.get(file_key), :dirname => _conf.get(dir_key))
  else
    raise "unsupported outputter #{klass}"
  end
  # TODO to set outputter-specific formatter
  outputter.formatter = _formatter
  return outputter
end
get_outputters(_conf, _formatter) click to toggle source

@private

# File lib/patriot/util/logger/log4r_factory.rb, line 75
def get_outputters(_conf, _formatter)
  outputters = _conf.get(OUTPUTTERS_KEY, [])
  outputters = [outputters] unless outputters.is_a?(Array)
  return outputters.map{|o| get_outputter(o, _conf, _formatter)}
  return outputters
end
set_log_level(logger, config) click to toggle source

set log level to the logger

# File lib/patriot/util/logger/log4r_factory.rb, line 37
def set_log_level(logger, config)
  log_level    = get_log_level(config)
  logger.level = log_level
  return logger
end
set_outputters(logger, config) click to toggle source

set outputters to the logger

# File lib/patriot/util/logger/log4r_factory.rb, line 45
def set_outputters(logger, config)
  formatter   = create_formatter(config)
  logger.outputters = get_outputters(config, formatter)
  return logger
end