Class: Loga::Formatters::GELFFormatter

Inherits:
Logger::Formatter
  • Object
show all
Includes:
TaggedLogging::Formatter
Defined in:
lib/loga/formatters/gelf_formatter.rb

Constant Summary collapse

GELF_VERSION =
'1.1'.freeze
SYSLOG_LEVEL_MAPPING =
{
  'DEBUG'   => 7,
  'INFO'    => 6,
  'WARN'    => 4,
  'ERROR'   => 3,
  'FATAL'   => 2,
  'UNKNOWN' => 1,
}.freeze
DEFAULT_TYPE =
'default'.freeze

Instance Method Summary collapse

Methods included from TaggedLogging::Formatter

#clear_tags!, #current_tags, #pop_tags, #push_tags, #tagged

Constructor Details

#initialize(opts) ⇒ GELFFormatter

Returns a new instance of GELFFormatter.



20
21
22
23
24
# File 'lib/loga/formatters/gelf_formatter.rb', line 20

def initialize(opts)
  @service_name    = opts.fetch(:service_name)
  @service_version = opts.fetch(:service_version)
  @host            = opts.fetch(:host)
end

Instance Method Details

#call(severity, time, _progname, message) ⇒ Object



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

def call(severity, time, _progname, message)
  event = build_event(time, message)
  payload = format_additional_fields(event.data)

  payload[:short_message] = event.message
  payload[:timestamp]     = compute_timestamp(event.timestamp)
  payload[:host]          = @host
  payload[:level]         = compute_level(severity)
  payload[:version]       = GELF_VERSION

  "#{payload.to_json}\n"
end