Parent

Files

Lumberjack::Formatter

This class controls the conversion of log entry messages into strings. This allows you to log any object you want and have the logging system worry about converting it into a string.

Formats are added to a Formatter by associating them with a class using the add method. Formats are any object that responds to the call method.

By default, all object will be converted to strings using their inspect method except for Strings and Exceptions. Strings are not converted and Exceptions are converted using the ExceptionFormatter.

Public Class Methods

new() click to toggle source
# File lib/lumberjack/formatter.rb, line 16
def initialize
  @class_formatters = {}
  @_default_formatter = InspectFormatter.new
  add(Object, @_default_formatter)
  add(String, :string)
  add(Exception, :exception)
end

Public Instance Methods

add(klass, formatter = nil, &block) click to toggle source

Add a formatter for a class. The formatter can be specified as either an object that responds to the call method or as a symbol representing one of the predefined formatters, or as a block to the method call.

The predefined formatters are: :inspect, :string, :exception, and :pretty_print.

Examples

# Use a predefined formatter
formatter.add(MyClass, :pretty_print)

# Pass in a formatter object
formatter.add(MyClass, Lumberjack::Formatter::PrettyPrintFormatter.new)

# Use a block
formatter.add(MyClass){|obj| obj.humanize}

# Add statements can be chained together
formatter.add(MyClass, :pretty_print).add(YourClass){|obj| obj.humanize}
# File lib/lumberjack/formatter.rb, line 43
def add(klass, formatter = nil, &block)
  formatter ||= block
  if formatter.is_a?(Symbol)
    formatter_class_name = "#{formatter.to_s.gsub(/(^|_)([a-z])/){|m| $~[2].upcase}}Formatter"
    formatter = Formatter.const_get(formatter_class_name).new
  end
  @class_formatters[klass] = formatter
  self
end
call(severity, timestamp, progname, msg) click to toggle source

Hack for compatibility with Logger::Formatter

# File lib/lumberjack/formatter.rb, line 65
def call(severity, timestamp, progname, msg)
  "#{format(msg)}\n"
end
format(message) click to toggle source

Format a message object as a string.

# File lib/lumberjack/formatter.rb, line 60
def format(message)
  formatter_for(message.class).call(message)
end
remove(klass) click to toggle source

Remove the formatter associated with a class. Remove statements can be chained together.

# File lib/lumberjack/formatter.rb, line 54
def remove(klass)
  @class_formatters.delete(klass)
  self
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.