Module: LogEasy::Formatters

Defined in:
lib/logeasy/formatters.rb

Overview

Pre-defined formatter procs.

Constant Summary collapse

LOG_TIMESTAMP =

Timestamp format for use by log formatters.

"%d-%m-%Y %H:%M:%S.%L %z"
DEFAULT_FORMATTER =

Default formatter that prints messages in the format [TIMESTAMP] [LEVEL] – [LOGGER] - [MESSAGE]

proc do |log_item|
  logger_name = log_item.logger.name
  level = log_item.level
  message = log_item.message
  timestamp = log_item.timestamp.strftime(LOG_TIMESTAMP)

  "[#{timestamp}] %-5s -- (%s) - %s\n" % [level, logger_name, message]
end
FULL_LOGGER_NAME_FORMATTER =

Custom formatter that prints messages in the format [TIMESTAMP] [LEVEL] – [LOGGER_FULL_NAME] - [MESSAGE]

proc do |log_item|
  logger_name = log_item.logger.full_name
  level = log_item.level
  message = log_item.message
  timestamp = log_item.timestamp.strftime(LOG_TIMESTAMP)

  "[#{timestamp}] %-5s -- (%s) - %s\n" % [level, logger_name, message]
end
STYLED_HTML_FORMATTER =

Styled HTML formatter. Allows the logs to be formatted easily using a CSS.

Each element is applied a class name. The whole log message is wrapped in a <span class=“<LEVEL>”> tag. The timestamp is wrapped in a <span class=“time”> tag. The level is wrapped in a <span class=“level”> tag. The logger name is wrapped in a <span class=“logger”> tag. The message is wrapped in a <span class=“message”> tag.

Unformatted messages are wrapped in a <span class=“UNF”> tag, irrespective of the level they were logged at.

proc do |log_item|
  if log_item.unformatted
    level_str = Level::UNFORMATTED.to_s
    "<span class=\"#{level_str}\">#{log_item.message}</span><br />"
  else
    level_str = log_item.level.to_s
    logger_name = "<span class=\"logger\">(#{log_item.logger.name})</span>"
    level = "<span class=\"level\">#{("%-5s" % level_str)}</span>"
    message = "<span class=\"message\">#{log_item.message}</span>"
    timestamp = "<span class=\"time\">[#{log_item.timestamp.strftime(LOG_TIMESTAMP)}]</span>"
    "<span class=\"#{level_str}\">#{timestamp} #{level} -- #{logger_name} #{message}</span><br />"
  end
end