Class: Insque::JsonFormatter

Inherits:
Logger::Formatter
  • Object
show all
Defined in:
lib/insque/json_formatter.rb

Instance Method Summary collapse

Instance Method Details

#call(severity, time, progname, data) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/insque/json_formatter.rb', line 3

def call(severity, time, progname, data)
  msg, additional_fields = if data.is_a? ::Hash
                             [data[:msg], data[:additional_fields]]
  else
    [data, {}]
  end
  message = case msg
            when ::String
              { message: msg }
            when ::Hash
              msg
            when ::Exception
              {
                error: "#{ msg.message } (#{ msg.class })",
                error_class: "#{msg.class}",
                backtrace: (msg.backtrace || []).join("\n\t")
              }
            else
              { message: msg.inspect }
            end
  "#{message.merge(timestamp: time, level: severity).merge(additional_fields).to_json}\n"
end