class SemanticLogger::Formatters::Logfmt

Public Class Methods

new(time_format: :iso_8601, time_key: :timestamp, **args) click to toggle source
Calls superclass method
# File lib/semantic_logger/formatters/logfmt.rb, line 6
def initialize(time_format: :iso_8601, time_key: :timestamp, **args)
  super(time_format: time_format, time_key: time_key, **args)
end

Public Instance Methods

call(log, logger) click to toggle source
Calls superclass method
# File lib/semantic_logger/formatters/logfmt.rb, line 10
def call(log, logger)
  @raw = super(log, logger)

  raw_to_logfmt
end

Private Instance Methods

flatten_log() click to toggle source
# File lib/semantic_logger/formatters/logfmt.rb, line 39
def flatten_log
  flattened = @parsed.map do |key, value|
    "#{key}=#{parse_value(value)}"
  end

  flattened.join(" ")
end
handle_exception() click to toggle source
# File lib/semantic_logger/formatters/logfmt.rb, line 32
def handle_exception
  return unless @raw.key? :exception

  @parsed[:tag] = "exception"
  @parsed = @parsed.merge(@raw[:exception])
end
handle_payload() click to toggle source
# File lib/semantic_logger/formatters/logfmt.rb, line 26
def handle_payload
  return unless @raw.key? :payload

  @parsed = @parsed.merge(@raw[:payload])
end
parse_value(value) click to toggle source
# File lib/semantic_logger/formatters/logfmt.rb, line 47
def parse_value(value)
  return value.to_json if value.instance_of? String

  value
end
raw_to_logfmt() click to toggle source
# File lib/semantic_logger/formatters/logfmt.rb, line 18
def raw_to_logfmt
  @parsed = @raw.slice(:timestamp, :level, :name, :message, :duration).merge tag: "success"
  handle_payload
  handle_exception

  flatten_log
end