class Twiglet::Formatter
Public Class Methods
new(service_name, validator:, default_properties: {}, now: -> { Time.now.utc }
click to toggle source
Calls superclass method
# File lib/twiglet/formatter.rb, line 9 def initialize(service_name, validator:, default_properties: {}, now: -> { Time.now.utc }) @service_name = service_name @now = now @default_properties = default_properties @validator = validator super() end
Public Instance Methods
call(severity, _time, _progname, msg)
click to toggle source
# File lib/twiglet/formatter.rb, line 20 def call(severity, _time, _progname, msg) level = severity.downcase message = Message.new(msg) @validator.validate(message) log(level: level, message: message) end
Private Instance Methods
log(level:, message:)
click to toggle source
# File lib/twiglet/formatter.rb, line 29 def log(level:, message:) base_message = { ecs: { version: '1.5.0' }, "@timestamp": @now.call.iso8601(3), service: { name: @service_name }, log: { level: level } } base_message .deep_merge(@default_properties.to_nested) .deep_merge(message.to_nested) .to_json .concat("\n") end