reevoo/sapience-rb

View on GitHub
lib/sapience/formatters/default.rb

Summary

Maintainability
A
45 mins
Test Coverage
# frozen_string_literal: true
module Sapience
  module Formatters
    class Default < Base
      # Default text log format
      #  Generates logs of the form:
      #    2011-07-19 14:36:15.660235 D [1149:ScriptThreadProcess] Rails -- Hello World
      def call(log, _logger) # rubocop:disable AbcSize, PerceivedComplexity, CyclomaticComplexity
        # Date & time
        message = time_format.nil? ? "" : "#{format_time(log.time)} "

        # Log level and process info
        message += "#{log.level_to_s} [#{log.process_info}]"

        # Tags
        message += " " + log.tags.collect { |tag| "[#{tag}]" }.join(" ") if log.tags && !log.tags.empty?

        # Duration
        message += " (#{log.duration_human})" if log.duration

        # Class / app name
        message += " #{log.name}"

        # Log message
        message += " -- #{log.message}" if log.message

        # Payload
        if (payload = log.payload_to_s)
          message += " -- " + payload
        end

        # Exceptions
        if log.exception
          message += " -- Exception: #{log.exception.class}: #{log.exception.message}\n"
          message += log.backtrace_to_s
        end
        message
      end
    end
  end
end