Class: Datadog::Logging::Formatter::JsonFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/datadog/logging/formatter/json_formatter.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.call(severity, time, progname, msg) ⇒ String (frozen)

Parameters:

  • severity (String)

    The Severity of the log message: should correspond to a constant in Logger::Severity

  • time (Object)

    A Time instance representing when the message was logged.

  • progname (Object)

    The #progname configured, or passed to the logger method.

  • msg (Object)

    The Object the user passed to the log message; not necessarily a String.

Returns:

  • (String (frozen))

See Also:

  • Logger::Severity


17
18
19
# File 'lib/datadog/logging/formatter/json_formatter.rb', line 17

def self.call(severity, time, progname, msg)
  new.call(severity, time, progname, msg)
end

Instance Method Details

#call(_severity, time, progname, msg) ⇒ String (frozen)

Parameters:

  • _severity (String)

    The Severity of the log message: should correspond to a constant in Logger::Severity

  • time (Object)

    A Time instance representing when the message was logged.

  • progname (Object)

    The #progname configured, or passed to the logger method.

  • msg (Object)

    The Object the user passed to the log message; not necessarily a String.

Returns:

  • (String (frozen))

See Also:

  • Logger::Severity


27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/datadog/logging/formatter/json_formatter.rb', line 27

def call(_severity, time, progname, msg)
  base_message = { time: time }

  base_message[:progname] = progname unless progname.nil? || progname.empty?

  message = case msg
            when String
              base_message.merge(message: msg)
            when Exception
              base_message.merge(error: {
                                   kind: msg.class.name, message: msg.message, stack: msg.backtrace
                                 })
            when Hash
              base_message.merge(msg)
            else
              base_message.merge(message: msg.inspect)
            end

  "#{message.to_json}\n"
end