Sha256: 4abeb9ebef7abdcf3a6ec7370fe3b4b34eac439b8c8c0d30ac93143e109a32a1

Contents?: true

Size: 925 Bytes

Versions: 2

Compression:

Stored size: 925 Bytes

Contents

require 'time'

class StrftimeLogger
  class Formatter
    FORMAT = "%s [%s] %s\n"
    LEVEL_TEXT = %w(DEBUG INFO WARN ERROR FATAL UNKNOWN)

    def initialize(opts={})
    end

    def call(severity, message = nil, &block)
      if message.nil?
        if block_given?
          message = yield
        else
          message = ""
        end
      end
      if severity.nil?
        format_message(message) + "\n"
      else
        FORMAT % [format_datetime(Time.now), format_severity(severity), format_message(message)]
      end
    end

    private
    def format_datetime(time)
      time.iso8601
    end

    def format_severity(severity)
      LEVEL_TEXT[severity]
    end

    def format_message(message)
      case message
      when ::Exception
        e = message
        "#{e.class} (#{e.message})\\n  #{e.backtrace.join("\\n  ")}}"
      else
        message.to_s.gsub(/\n/, "\\n")
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
strftime_logger-0.0.4 lib/strftime_logger/formatter.rb
strftime_logger-0.0.3 lib/strftime_logger/formatter.rb