Sha256: 30af4e03eafe240e1cedf325986da0618f2e1843e5851eb8ee3d95fe1a84a058

Contents?: true

Size: 1.44 KB

Versions: 5

Compression:

Stored size: 1.44 KB

Contents

# typed: true
module Datadog
  module Contrib
    module SemanticLogger
      # Instrumentation for SemanticLogger
      module Instrumentation
        def self.included(base)
          base.prepend(InstanceMethods)
        end

        # Instance methods for configuration
        module InstanceMethods
          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
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ddtrace-0.54.2 lib/ddtrace/contrib/semantic_logger/instrumentation.rb
ddtrace-0.54.1 lib/ddtrace/contrib/semantic_logger/instrumentation.rb
ddtrace-0.54.0 lib/ddtrace/contrib/semantic_logger/instrumentation.rb
ddtrace-0.53.0 lib/ddtrace/contrib/semantic_logger/instrumentation.rb
ddtrace-0.52.0 lib/ddtrace/contrib/semantic_logger/instrumentation.rb