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.



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

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



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/puppet_forge_server/logger.rb', line 40

def method_missing (method_name, *args, &block)
  method_name = case method_name
                  when :write, :puts
                    '<<'
                  when :flush
                    ''
                  else
                    method_name
                end
  if args.size > 0
    # setters
    @loggers.each { |logger| logger.send(method_name, args.first) }
  else
    # getters
    @loggers.collect { |logger| logger.send(method_name) }
  end
end

Class Method Details

.get(type = :server) ⇒ Object



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

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

.set(loggers = {}) ⇒ Object



72
73
74
75
76
77
# File 'lib/puppet_forge_server/logger.rb', line 72

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



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

def flush
  # ignore
end

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

Returns:

  • (Boolean)


58
59
60
# File 'lib/puppet_forge_server/logger.rb', line 58

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