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

Defined in:
lib/ddtrace/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



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

def log(log, message = nil, progname = nil, &block)
  original_named_tags = log.named_tags || {}

  # Retrieves trace information for current thread
  correlation = Datadog.tracer.active_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: ['ruby']
  }

  # # 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