Class: MrLogaLoga::Formatters::Json

Inherits:
Logger::Formatter
  • Object
show all
Defined in:
lib/mr_loga_loga/formatters/json.rb

Overview

Description

A simple Json formatter for MrLogaLoga.

Format

The json formatter renders messages into a single-line json. Context keys are embedded on the top level.

Log Format:

{ "severity": "Severity", .. "message": "Message", "key1": "Key1" }

Instance Method Summary collapse

Instance Method Details

#call(severity, datetime, progname, message, context) ⇒ String

Render a log message in JSON

Parameters:

  • severity (String)

    The message severity

  • datetime (DateTime)

    The message date time

  • progname (DateTime)

    The program name

  • message (Object)

    The log message, which may not be a string

  • context (Hash)

    The log message context

Returns:

  • (String)

    the formatted log message



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/mr_loga_loga/formatters/json.rb', line 26

def call(severity, datetime, progname, message, context)
  message = message.nil? ? '' : msg2str(message).strip

  message_hash = {
    severity: severity,
    datetime: datetime.strftime('%Y-%m-%dT%H:%M:%S.%6N'),
    pid: Process.pid,
    progname: progname,
    message: (message.empty? ? nil : message),
    **context
  }.compact
  "#{message_hash.to_json}\n"
end