Class: Log4Ruby::PatternFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/log4ruby/formatters/pattern_formatter.rb

Instance Method Summary collapse

Constructor Details

#initialize(format_string, subst_array, parameter_formatters = {}) ⇒ PatternFormatter

New pattern formatter.

e.g. format_string = [%s] %7s - %s : %s subst_array = [:timestamp, :level, :full_logger_name, :message]

The above example will print the timestamp in the format specified. The level will be right aligned padded on the left to use 7 spaces followed by the full logger name and the message.



27
28
29
30
31
# File 'lib/log4ruby/formatters/pattern_formatter.rb', line 27

def initialize(format_string, subst_array, parameter_formatters = {})
  @format_string = format_string
  @subst_array = subst_array
  @parameter_formatters = parameter_formatters
end

Instance Method Details

#add_parameter_formatter(parameter, callable) ⇒ Object

Adds a parameter formatter to this formatter.



37
38
39
# File 'lib/log4ruby/formatters/pattern_formatter.rb', line 37

def add_parameter_formatter(parameter, callable)
  @parameter_formatters[parameter] = callable
end

#format(log) ⇒ String

Format the log item using the pattern string.



46
47
48
49
50
51
52
53
54
# File 'lib/log4ruby/formatters/pattern_formatter.rb', line 46

def format(log)
  # Get the values of the parameters (apply custom formatters too).

  parameters = @subst_array.map do |parameter|
    value = log[parameter]
    @parameter_formatters.has_key?(parameter) ? @parameter_formatters[parameter].call(value) : value.to_s
  end
  # Substitute into the format string.

  @format_string % parameters
end