Class: Lumberjack::Formatter
- Inherits:
-
Object
- Object
- Lumberjack::Formatter
- Defined in:
- lib/lumberjack/formatter.rb,
lib/lumberjack/formatter/string_formatter.rb,
lib/lumberjack/formatter/inspect_formatter.rb,
lib/lumberjack/formatter/exception_formatter.rb,
lib/lumberjack/formatter/pretty_print_formatter.rb
Overview
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.
Defined Under Namespace
Classes: ExceptionFormatter, InspectFormatter, PrettyPrintFormatter, StringFormatter
Instance Method Summary collapse
-
#add(klass, formatter = nil, &block) ⇒ Object
Add a formatter for a class.
-
#format(message) ⇒ Object
Format a message object as a string.
-
#initialize ⇒ Formatter
constructor
A new instance of Formatter.
-
#remove(klass) ⇒ Object
Remove the formatter associated with a class.
Constructor Details
#initialize ⇒ Formatter
Returns a new instance of Formatter.
16 17 18 19 20 21 22 |
# 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 |
Instance Method Details
#add(klass, formatter = nil, &block) ⇒ Object
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}
43 44 45 46 47 48 49 50 51 |
# 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 |
#format(message) ⇒ Object
Format a message object as a string.
60 61 62 |
# File 'lib/lumberjack/formatter.rb', line 60 def format() formatter_for(.class).call() end |
#remove(klass) ⇒ Object
Remove the formatter associated with a class. Remove statements can be chained together.
54 55 56 57 |
# File 'lib/lumberjack/formatter.rb', line 54 def remove(klass) @class_formatters.delete(klass) self end |