Sha256: 8eac9d76207cbd39c77be89fc3808723dbd3ee69cd7f71b1291f269518e2d6c5

Contents?: true

Size: 947 Bytes

Versions: 4

Compression:

Stored size: 947 Bytes

Contents

require 'logger'

module Liquid
  module Logging

    ##
    # DocumentLogger is a Logger compliant class that keeps a structured
    # document per log message in memory.
    #
    class DocumentLogger < ::Logger

      attr_accessor :attrs
      attr_accessor :messages

      def initialize
        super(nil)
        @messages = []
        @attrs = {}
      end

      def add(severity, message = nil, progname = nil, &block)
        severity ||= UNKNOWN
        if severity < @level
          return true
        end

        progname ||= @progname

        if message.nil?
          if block_given?
            message = yield
          else
            message = progname
            progname = @progname
          end
        end

        @messages << @attrs.merge({
          severity: severity,
          time: Time.now.to_f,
          progname: progname,
          message: message,
        })

        true
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
liquid-logging-2.0.1 lib/liquid/logging/document_logger.rb
liquid-logging-2.0.1-java lib/liquid/logging/document_logger.rb
liquid-logging-2.0.0 lib/liquid/logging/document_logger.rb
liquid-logging-2.0.0-java lib/liquid/logging/document_logger.rb