Class: JsonLogging::Formatter

Inherits:
Logger::Formatter
  • Object
show all
Defined in:
lib/json_logging/formatter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tags: []) ⇒ Formatter



3
4
5
6
# File 'lib/json_logging/formatter.rb', line 3

def initialize(tags: [])
  super()
  @tags = Array(tags)
end

Instance Attribute Details

#tagsObject (readonly)

Returns the value of attribute tags.



8
9
10
# File 'lib/json_logging/formatter.rb', line 8

def tags
  @tags
end

Instance Method Details

#call(severity, timestamp, progname, msg) ⇒ Object



10
11
12
13
14
15
16
17
18
# File 'lib/json_logging/formatter.rb', line 10

def call(severity, timestamp, progname, msg)
  timestamp_str = Helpers.normalize_timestamp(timestamp)
  payload = PayloadBuilder.build_base_payload(msg, severity: severity, timestamp: timestamp_str)
  payload = PayloadBuilder.merge_context(payload, additional_context: JsonLogging.additional_context.compact, tags: @tags)

  "#{payload.compact.to_json}\n"
rescue => e
  build_fallback_output(severity, timestamp, msg, e)
end