class Applicaster::Logger::Formatter

Attributes

default_fields[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/applicaster/logger/formatter.rb, line 15
def initialize(options = {})
  @default_fields = options.with_indifferent_access
  @datetime_format = nil
end

Public Instance Methods

call(severity, time, progname, message) click to toggle source
# File lib/applicaster/logger/formatter.rb, line 20
def call(severity, time, progname, message)
  data =
    default_fields.
    deep_merge(message_to_data(message)).
    merge({ severity: severity, host: HOST }).
    deep_merge(Applicaster::Logger::ThreadContext.current)

  event = LogStash::Event.new(data)
  event.timestamp = time.utc.iso8601(3)
  event.tags = current_tags
  "#{event.to_json}\n"
end

Protected Instance Methods

message_to_data(message) click to toggle source
# File lib/applicaster/logger/formatter.rb, line 35
def message_to_data(message)
  case message
  when Hash
    message.with_indifferent_access
  when LogStash::Event
    message.to_hash.with_indifferent_access
  when /^\{/
    JSON.parse(message).with_indifferent_access rescue { message: msg2str(message) }
  else
    { message: msg2str(message) }.with_indifferent_access
  end
end