Class: Datadog::Loggers::JSONFormatter

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

Defined Under Namespace

Modules: DefaultFormatter, ExceptionFormatter, HashFormatter, StringFormatter

Class Method Summary collapse

Class Method Details

.base_log_hash(severity, datetime, progname) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/datadog/loggers/json_formatter.rb', line 20

def self.base_log_hash(severity, datetime, progname)
  {
    dd: correlation_hash,
    timestamp: datetime.to_s,
    severity: severity.ljust(5).to_s,
    progname: progname.to_s
  }
end

.call(severity, datetime, progname, msg) {|log_hash| ... } ⇒ Object

Yields:

  • (log_hash)


10
11
12
13
14
15
16
17
18
# File 'lib/datadog/loggers/json_formatter.rb', line 10

def self.call(severity, datetime, progname, msg)
  log_hash = base_log_hash(severity, datetime, progname)
  formatter = formatter_for(msg)
  formatter.format(log_hash, msg)

  yield(log_hash) if block_given?

  "#{::JSON.dump(log_hash)}\n"
end

.correlation_hashObject



38
39
40
41
42
43
44
45
46
47
# File 'lib/datadog/loggers/json_formatter.rb', line 38

def self.correlation_hash
  correlation = Datadog::Tracing.correlation
  {
    trace_id: correlation.trace_id&.to_s,
    span_id: correlation.span_id&.to_s,
    env: correlation.env&.to_s,
    service: correlation.service&.to_s,
    version: correlation.version&.to_s
  }
end

.formatter_for(msg) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/datadog/loggers/json_formatter.rb', line 29

def self.formatter_for(msg)
  case msg
  when Hash then HashFormatter
  when Exception then ExceptionFormatter
  when String then StringFormatter
  else DefaultFormatter
  end
end