Sha256: b0788f2189c890ca0d8112aa973923713e337456e78124f36dff8a8d9719dda6

Contents?: true

Size: 1.71 KB

Versions: 8

Compression:

Stored size: 1.71 KB

Contents

# frozen_string_literals: true

module Lumberjack
  # An entry in a log is a data structure that captures the log message as well as
  # information about the system that logged the message.
  class LogEntry
    attr_accessor :time, :message, :severity, :progname, :pid, :tags

    TIME_FORMAT = "%Y-%m-%dT%H:%M:%S"

    UNIT_OF_WORK_ID = "unit_of_work_id"

    def initialize(time, severity, message, progname, pid, tags)
      @time = time
      @severity = (severity.is_a?(Integer) ? severity : Severity.label_to_level(severity))
      @message = message
      @progname = progname
      @pid = pid
      # backward compatibility with 1.0 API where the last argument was the unit of work id
      if tags.nil? || tags.is_a?(Hash)
        @tags = tags
      else
        @tags = { UNIT_OF_WORK_ID => tags }
      end
    end

    def severity_label
      Severity.level_to_label(severity)
    end

    def to_s
      "[#{time.strftime(TIME_FORMAT)}.#{(time.usec / 1000.0).round.to_s.rjust(3, '0')} #{severity_label} #{progname}(#{pid})#{tags_to_s}] #{message}"
    end

    def inspect
      to_s
    end

    # Deprecated - backward compatibility with 1.0 API
    def unit_of_work_id
      tags[UNIT_OF_WORK_ID] if tags
    end

    # Deprecated - backward compatibility with 1.0 API
    def unit_of_work_id=(value)
      if tags
        tags[UNIT_OF_WORK_ID] = value
      else
        @tags = { UNIT_OF_WORK_ID => value }
      end
    end
    
    # Return the tag with the specified name.
    def tag(name)
      tags[name.to_s] if tags
    end

    private

    def tags_to_s
      tags_string = String.new
      if tags
        tags.each { |name, value| tags_string << " #{name}:#{value.inspect}" }
      end
      tags_string
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
lumberjack-1.2.7 lib/lumberjack/log_entry.rb
lumberjack-1.2.6 lib/lumberjack/log_entry.rb
lumberjack-1.2.5 lib/lumberjack/log_entry.rb
lumberjack-1.2.4 lib/lumberjack/log_entry.rb
lumberjack-1.2.3 lib/lumberjack/log_entry.rb
lumberjack-1.2.2 lib/lumberjack/log_entry.rb
lumberjack-1.2.1 lib/lumberjack/log_entry.rb
lumberjack-1.2.0 lib/lumberjack/log_entry.rb