Class: PuppetForgeServer::Logger

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

Constant Summary collapse

@@DEFAULT_LOG_LEVEL =
::Logger::INFO
@@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_DESTINATION]) ⇒ Logger

Returns a new instance of Logger.



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

def initialize(destinations = [@@DEFAULT_DESTINATION])
  @loggers = [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.level = @@DEFAULT_LOG_LEVEL
    logger
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

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



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/puppet_forge_server/logger.rb', line 39

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

Class Method Details

.get(type = :server) ⇒ Object



60
61
62
63
# File 'lib/puppet_forge_server/logger.rb', line 60

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

.set(loggers = {}) ⇒ Object



65
66
67
68
69
70
# File 'lib/puppet_forge_server/logger.rb', line 65

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

Instance Method Details

#flushObject



55
56
57
# File 'lib/puppet_forge_server/logger.rb', line 55

def flush
  # ignore
end

#respond_to?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


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

def respond_to?(method_name, include_private = false)
  @loggers.each { |logger| return false unless (logger.respond_to?(method_name) || %w(write puts flush).include?(method_name.to_s)) }
end