Class: CMDx::LogFormatters::Logstash

Inherits:
Object
  • Object
show all
Defined in:
lib/cmdx/log_formatters/logstash.rb

Overview

Formats log messages as Logstash-compatible JSON for structured logging

This formatter converts log entries into Logstash-compatible JSON format with standardized fields including @version, @timestamp, severity, program name, process ID, and formatted message. The output follows Logstash event format specifications for seamless integration with ELK stack and similar systems.

Instance Method Summary collapse

Instance Method Details

#call(severity, time, progname, message) ⇒ String

Formats a log entry as a Logstash-compatible JSON string

Examples:

Basic usage

logger_formatter.call("INFO", Time.now, "MyApp", "User logged in")
# => '{"severity":"INFO","progname":"MyApp","pid":12345,"message":"User logged in","@version":"1","@timestamp":"2024-01-15T10:30:45.123456Z"}\n'

Parameters:

  • severity (String)

    The log level (e.g., “INFO”, “ERROR”, “DEBUG”)

  • time (Time)

    The timestamp when the log entry was created

  • progname (String, nil)

    The program name or identifier

  • message (Object)

    The log message content

Returns:

  • (String)

    A Logstash-compatible JSON-formatted log entry with a trailing newline



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/cmdx/log_formatters/logstash.rb', line 27

def call(severity, time, progname, message)
  hash = {
    severity:,
    progname:,
    pid: Process.pid,
    message: Utils::Format.to_log(message),
    "@version" => "1",
    "@timestamp" => time.utc.iso8601(6)
  }

  ::JSON.dump(hash) << "\n"
end