Sha256: 78a04ba9b26fb03a116d1358364b226e90f090157ae559a2ecec1bbbd2e1d8ff

Contents?: true

Size: 910 Bytes

Versions: 1

Compression:

Stored size: 910 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} #{e.backtrace.first}"
      else
        message.to_s.gsub(/\n/, "\\n")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
strftime_logger-0.0.2 lib/strftime_logger/formatter.rb