Class: PuppetForgeServer::Logger

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet_forge_server/logger.rb

Constant Summary collapse

@@DEFAULT_DESTINATION =
STDERR
@@DEFAULT_DATETIME_FORMAT =
'%Y-%m-%d %H:%M:%S'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(destinations = [@@DEFAULT_LOGGER]) ⇒ Logger

Returns a new instance of Logger.



26
27
28
29
30
31
32
33
34
35
# File 'lib/puppet_forge_server/logger.rb', line 26

def initialize(destinations = [@@DEFAULT_LOGGER])
  @loggers = Array.new(destinations).flatten.map do |dest|
    logger = ::Logger.new(dest)
    logger.formatter = proc do |severity, datetime, progname, msg|
      datetime = datetime.strftime @@DEFAULT_DATETIME_FORMAT
      "[#{datetime}] #{severity}  #{msg}\n"
    end
    logger
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args, &block) ⇒ Object



37
38
39
40
# File 'lib/puppet_forge_server/logger.rb', line 37

def method_missing (method_name, *args, &block)
  method_name = method_name == :write ? :'<<' : method_name
  @loggers.each { |logger| logger.send(method_name, args.first) }
end

Class Method Details

.get(type = :server) ⇒ Object



43
44
45
46
# File 'lib/puppet_forge_server/logger.rb', line 43

def get(type = :server)
  set unless @static_loggers[type]
  @static_loggers[type]
end

.set(loggers = {}) ⇒ Object



48
49
50
51
52
53
# File 'lib/puppet_forge_server/logger.rb', line 48

def set(loggers= {})
  loggers = {:server => [@@DEFAULT_DESTINATION], :access => [@@DEFAULT_DESTINATION]}.merge(loggers)
  loggers.each do |type, destinations|
    @static_loggers[type] = PuppetForgeServer::Logger.new(destinations)
  end
end