class Patriot::Util::Logger::Factory

logger factory

Constants

DEFAULT_LOGGER_FACTORY_CLASS

default logger factory class

FACTORY_CLASS_KEY

configuration key for logger factory class

Public Class Methods

create_logger(name, config) click to toggle source

@param name [String] logger name @param config [Patriot::Util::Config::Base] configuration @return [Patriot::Util::Logger::Facade]

# File lib/patriot/util/logger/factory.rb, line 17
def self.create_logger(name, config)
  klass = get_factory_class_name(config)
  # implentations of logger facotory should include Singleton
  logger = eval(klass).instance.get_logger(name, config)
  return logger
end
get_factory_class_name(config) click to toggle source

@param config [Patriot::Util::Config::Base] @return [String] factory class name

# File lib/patriot/util/logger/factory.rb, line 26
def self.get_factory_class_name(config)
  return config.get(FACTORY_CLASS_KEY, DEFAULT_LOGGER_FACTORY_CLASS).to_s
end
new() click to toggle source
# File lib/patriot/util/logger/factory.rb, line 30
def initialize
  @mutex   = Mutex.new
  @loggers = {}
end

Public Instance Methods

get_logger(name, config) click to toggle source

@param name [String] logger name @param config [Patriot::Util::Config::Base] configuration @return [Patriot::Util::Logger::Facade]

# File lib/patriot/util/logger/factory.rb, line 38
def get_logger(name, config)
  @mutex.synchronize do
    unless @loggers.has_key?(name)
      logger = build(name,config)
      @loggers[name] = Facade.new(logger)
    end
    return @loggers[name]
  end
end

Private Instance Methods

build(name, config) click to toggle source

build logger should be overridden in sub-classes @param name [String] logger name @param config [Patriot::Util::Config::Base] configuration

# File lib/patriot/util/logger/factory.rb, line 52
def build(name, config)
  raise NotImplementedError
end