Class: Zookeeper::Logger::ForwardingLogger

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

Overview

h/t _eric and Papertrail

Constant Summary collapse

@@mutex =
Monitor.new
@@loggers =
{}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(logger, options = {}) ⇒ ForwardingLogger

Returns a new instance of ForwardingLogger.



19
20
21
22
23
# File 'lib/zookeeper/logger/forwarding_logger.rb', line 19

def initialize(logger, options = {})
  @level     = ::Logger::DEBUG
  @logger    = logger
  @formatter = options[:formatter]
end

Instance Attribute Details

#formatterObject

Returns the value of attribute formatter.



6
7
8
# File 'lib/zookeeper/logger/forwarding_logger.rb', line 6

def formatter
  @formatter
end

#levelObject

Returns the value of attribute level.



6
7
8
# File 'lib/zookeeper/logger/forwarding_logger.rb', line 6

def level
  @level
end

Class Method Details

.for(logger, name) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/zookeeper/logger/forwarding_logger.rb', line 11

def self.for(logger, name)
  @@mutex.synchronize do
    @@loggers.fetch(name) do |k|
      @@loggers[k] = new(logger, :formatter => lambda { |m| "%25.25s: %s" % [k, m] })
    end
  end
end

Instance Method Details

#<<(msg) ⇒ Object



44
# File 'lib/zookeeper/logger/forwarding_logger.rb', line 44

def <<(msg); @logger << msg; end

#add(severity, message = nil, progname = nil, &block) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/zookeeper/logger/forwarding_logger.rb', line 25

def add(severity, message = nil, progname = nil, &block)
  severity ||= ::Logger::UNKNOWN
  if !@logger || severity < @level
    return true
  end
  
  message = (message || (block && block.call) || progname).to_s
  
  if @formatter && @formatter.respond_to?(:call)
    message = @formatter.call(message)
  end

  # If a newline is necessary then create a new message ending with a newline.
  # Ensures that the original message is not mutated.
  # message = "#{message}\n" unless message[-1] == ?\n
  
  @logger.add(severity, message)
end

#debug(progname = nil, &block) ⇒ Object



47
48
49
# File 'lib/zookeeper/logger/forwarding_logger.rb', line 47

def debug(progname = nil, &block)
  add(::Logger::DEBUG, nil, progname, &block)
end

#debug?Boolean

Returns:

  • (Boolean)


71
# File 'lib/zookeeper/logger/forwarding_logger.rb', line 71

def debug?; @level <= DEBUG; end

#error(progname = nil, &block) ⇒ Object



59
60
61
# File 'lib/zookeeper/logger/forwarding_logger.rb', line 59

def error(progname = nil, &block)
  add(::Logger::ERROR, nil, progname, &block)
end

#error?Boolean

Returns:

  • (Boolean)


77
# File 'lib/zookeeper/logger/forwarding_logger.rb', line 77

def error?; @level <= ERROR; end

#fatal(progname = nil, &block) ⇒ Object



63
64
65
# File 'lib/zookeeper/logger/forwarding_logger.rb', line 63

def fatal(progname = nil, &block)
  add(::Logger::FATAL, nil, progname, &block)
end

#fatal?Boolean

Returns:

  • (Boolean)


79
# File 'lib/zookeeper/logger/forwarding_logger.rb', line 79

def fatal?; @level <= FATAL; end

#info(progname = nil, &block) ⇒ Object



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

def info(progname = nil, &block)
  add(::Logger::INFO, nil, progname, &block)
end

#info?Boolean

Returns:

  • (Boolean)


73
# File 'lib/zookeeper/logger/forwarding_logger.rb', line 73

def info?; @level <= INFO; end

#unknown(progname = nil, &block) ⇒ Object



67
68
69
# File 'lib/zookeeper/logger/forwarding_logger.rb', line 67

def unknown(progname = nil, &block)
  add(::Logger::UNKNOWN, nil, progname, &block)
end

#warn(progname = nil, &block) ⇒ Object



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

def warn(progname = nil, &block)
  add(::Logger::WARN, nil, progname, &block)
end

#warn?Boolean

Returns:

  • (Boolean)


75
# File 'lib/zookeeper/logger/forwarding_logger.rb', line 75

def warn?; @level <= WARN; end

#write(msg) ⇒ Object



45
# File 'lib/zookeeper/logger/forwarding_logger.rb', line 45

def write(msg); @logger.write(msg); end