Module: Pangea::Logging::Formatters

Included in:
StructuredLogger
Defined in:
lib/pangea/logging/formatters.rb

Constant Summary collapse

LEVEL_ROLES =
{
  debug: :debug,
  info: :info,
  warn: :warning,
  error: :error,
  fatal: :replace
}.freeze
EXCLUDED_CONTEXT_KEYS =
%i[
  timestamp level message correlation_id pid thread_id ruby_version
].freeze

Instance Method Summary collapse

Instance Method Details

#format_json(entry) ⇒ Object



49
50
51
# File 'lib/pangea/logging/formatters.rb', line 49

def format_json(entry)
  JSON.generate(entry)
end

#format_logfmt(entry) ⇒ Object



53
54
55
56
57
58
# File 'lib/pangea/logging/formatters.rb', line 53

def format_logfmt(entry)
  entry.map { |k, v|
    value = v.to_s.include?(' ') ? "\"#{v}\"" : v
    "#{k}=#{value}"
  }.join(' ')
end

#format_pretty(entry) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/pangea/logging/formatters.rb', line 35

def format_pretty(entry)
  timestamp = Time.parse(entry[:timestamp]).strftime('%Y-%m-%d %H:%M:%S.%L')
  level = entry[:level].ljust(5)
  level_role = LEVEL_ROLES[entry[:level].downcase.to_sym]

  context_str = build_context_string(entry)

  if defined?(Boreal) && level_role
    level = Boreal.paint(level, level_role)
  end

  "#{timestamp} [#{level}] #{entry[:message]}#{context_str}"
end

#format_simple(entry) ⇒ Object



60
61
62
# File 'lib/pangea/logging/formatters.rb', line 60

def format_simple(entry)
  "#{entry[:level]} - #{entry[:message]}"
end