Module: Datadog::Tracing::Contrib::SemanticLogger::Instrumentation::InstanceMethods

Defined in:
lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb

Overview

Instance methods for configuration

Instance Method Summary collapse

Instance Method Details

#log(log, message = nil, progname = nil, &block) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb', line 15

def log(log, message = nil, progname = nil, &block)
  return super unless Datadog.configuration.tracing[:semantic_logger].enabled

  original_named_tags = log.named_tags || {}

  # Retrieves trace information for current thread
  correlation = Tracing.correlation
  # merge original lambda with datadog context

  datadog_trace_log_hash = {
    # Adds IDs as tags to log output
    dd: {
      # To preserve precision during JSON serialization, use strings for large numbers
      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
    },
    ddsource: Core::Logging::Ext::DD_SOURCE
  }

  # # if the user already has conflicting log_tags
  # # we want them to clobber ours, because we should allow them to override
  # # if needed.
  log.named_tags = datadog_trace_log_hash.merge(original_named_tags)
  super(log, message, progname, &block)
end