Sha256: 9d689fae0a80bd0709077fe9a200af6d925c2d219b3aaaa6961e693cab6f47fe

Contents?: true

Size: 955 Bytes

Versions: 9

Compression:

Stored size: 955 Bytes

Contents

require 'semlogr/templates/parser'
require 'semlogr/properties/output_properties'
require 'semlogr/templates/property_token'

module Semlogr
  module Formatters
    class TextFormatter
      DEFAULT_TEMPLATE = "[{timestamp}] {severity}: {message}\n{error}".freeze

      def initialize(template: DEFAULT_TEMPLATE)
        @template = Templates::Parser.parse(template)
      end

      def format(log_event)
        output = ''
        output_properties = Properties::OutputProperties.create(log_event)

        @template.tokens.each do |token|
          case token
          when Templates::PropertyToken
            if token.property_name == :message
              log_event.render(output)
            elsif output_properties[token.property_name]
              token.render(output, output_properties)
            end
          else
            token.render(output, output_properties)
          end
        end

        output
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
semlogr-0.3.0 lib/semlogr/formatters/text_formatter.rb
semlogr-0.2.3 lib/semlogr/formatters/text_formatter.rb
semlogr-0.2.2 lib/semlogr/formatters/text_formatter.rb
semlogr-0.2.1 lib/semlogr/formatters/text_formatter.rb
semlogr-0.2.0 lib/semlogr/formatters/text_formatter.rb
semlogr-0.1.3 lib/semlogr/formatters/text_formatter.rb
semlogr-0.1.2 lib/semlogr/formatters/text_formatter.rb
semlogr-0.1.1 lib/semlogr/formatters/text_formatter.rb
semlogr-0.1.0 lib/semlogr/formatters/text_formatter.rb