Class: Lumberjack::Formatter::ExceptionFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/lumberjack/formatter/exception_formatter.rb

Overview

Format an exception including the backtrace. You can specify an object that responds to call as a backtrace cleaner. The exception backtrace will be passed to this object and the returned array is what will be logged. You can use this to clean out superfluous lines.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(backtrace_cleaner = nil) ⇒ ExceptionFormatter

Returns a new instance of ExceptionFormatter.

Parameters:

  • backtrace_cleaner (#call, nil) (defaults to: nil)

    An object that responds to call and takes an array of strings (the backtrace) and returns an array of strings (the cleaned backtrace).



20
21
22
# File 'lib/lumberjack/formatter/exception_formatter.rb', line 20

def initialize(backtrace_cleaner = nil)
  self.backtrace_cleaner = backtrace_cleaner
end

Instance Attribute Details

#backtrace_cleaner#call?

Returns An object that responds to call and takes an array of strings (the backtrace) and returns an array of strings.

Returns:

  • (#call, nil)

    An object that responds to call and takes an array of strings (the backtrace) and returns an array of strings.



15
16
17
# File 'lib/lumberjack/formatter/exception_formatter.rb', line 15

def backtrace_cleaner
  @backtrace_cleaner
end

Instance Method Details

#call(exception) ⇒ String

Format an exception with its message and backtrace.

Parameters:

  • exception (Exception)

    The exception to format.

Returns:

  • (String)

    The formatted exception with class name, message, and backtrace.



28
29
30
31
32
33
34
35
36
# File 'lib/lumberjack/formatter/exception_formatter.rb', line 28

def call(exception)
  message = +"#{exception.class.name}: #{exception.message}"
  trace = exception.backtrace
  if trace
    trace = clean_backtrace(trace)
    message << "#{Lumberjack::LINE_SEPARATOR}  #{trace.join("#{Lumberjack::LINE_SEPARATOR}  ")}"
  end
  message
end