Class: DRbService::ColorLogFormatter

Inherits:
Logger::Formatter
  • Object
show all
Extended by:
ANSIColorUtilities
Defined in:
lib/drbservice/utils.rb

Overview

A ANSI-colorized formatter for Logger instances.

Usage

require 'drbservice/utils'
DRbService.logger.formatter = DRbService::ColorLogFormatter.new( DRbService.logger )

Version

$Id: utils.rb,v 87bc5aa9e2be 2011/08/29 21:05:42 ged $

Authors

:include: LICENSE

--

Please see the file LICENSE in the 'docs' directory for licensing details.

Constant Summary collapse

LEVEL_FORMATS =

Color settings

{
  :debug => colorize( :bold, :black ) {"[%1$s.%2$06d %3$d/%4$s] %5$5s {%6$s} -- %7$s\n"},
  :info  => colorize( :normal ) {"[%1$s.%2$06d %3$d/%4$s] %5$5s -- %7$s\n"},
  :warn  => colorize( :bold, :yellow ) {"[%1$s.%2$06d %3$d/%4$s] %5$5s -- %7$s\n"},
  :error => colorize( :red ) {"[%1$s.%2$06d %3$d/%4$s] %5$5s -- %7$s\n"},
  :fatal => colorize( :bold, :red, :on_white ) {"[%1$s.%2$06d %3$d/%4$s] %5$5s -- %7$s\n"},
}

Constants included from ANSIColorUtilities

ANSIColorUtilities::ANSI_ATTRIBUTES

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ANSIColorUtilities

ansi_code, colorize

Constructor Details

#initialize(logger, settings = {}) ⇒ ColorLogFormatter

Initialize the formatter with a reference to the logger so it can check for log level.



190
191
192
193
194
195
196
197
# File 'lib/drbservice/utils.rb', line 190

def initialize( logger, settings={} ) # :notnew:
  settings = LEVEL_FORMATS.merge( settings )

  @logger   = logger
  @settings = settings

  super()
end

Instance Attribute Details

#loggerObject

The Logger object associated with the formatter



204
205
206
# File 'lib/drbservice/utils.rb', line 204

def logger
  @logger
end

#settingsObject

The formats, by level



207
208
209
# File 'lib/drbservice/utils.rb', line 207

def settings
  @settings
end

Instance Method Details

#call(severity, time, progname, msg) ⇒ Object

Log using the format associated with the severity



211
212
213
214
215
216
217
218
219
220
221
222
223
# File 'lib/drbservice/utils.rb', line 211

def call( severity, time, progname, msg )
  args = [
    time.strftime( '%Y-%m-%d %H:%M:%S' ),                         # %1$s
    time.usec,                                                    # %2$d
    Process.pid,                                                  # %3$d
    Thread.current == Thread.main ? 'main' : Thread.object_id,    # %4$s
    severity,                                                     # %5$s
    progname,                                                     # %6$s
    msg                                                           # %7$s
  ]

  return self.settings[ severity.downcase.to_sym ] % args
end