Sha256: 38da551288448733df085dfbd28a57f84ffb29b58975fe4a0e7930c250f097ac

Contents?: true

Size: 1.39 KB

Versions: 2

Compression:

Stored size: 1.39 KB

Contents

require 'ddtrace/ext/correlation'
require 'datadog/core/environment/variable_helpers'

module Datadog
  # Contains behavior for managing correlations with tracing
  # e.g. Retrieve a correlation to the current trace for logging, etc.
  module Correlation
    # Struct representing correlation
    Identifier = Struct.new(:trace_id, :span_id, :env, :service, :version) do
      def initialize(*args)
        super
        self.trace_id = trace_id || 0
        self.span_id = span_id || 0
        self.env = env || Datadog.configuration.env
        self.service = service || Datadog.configuration.service
        self.version = version || Datadog.configuration.version
      end

      def to_s
        attributes = []
        attributes << "#{Ext::Correlation::ATTR_ENV}=#{env}" unless env.nil?
        attributes << "#{Ext::Correlation::ATTR_SERVICE}=#{service}" unless service.nil?
        attributes << "#{Ext::Correlation::ATTR_VERSION}=#{version}" unless version.nil?
        attributes << "#{Ext::Correlation::ATTR_TRACE_ID}=#{trace_id}"
        attributes << "#{Ext::Correlation::ATTR_SPAN_ID}=#{span_id}"
        attributes.join(' ')
      end
    end.freeze

    module_function

    # Produces a CorrelationIdentifier from the Context provided
    def identifier_from_context(context)
      return Identifier.new.freeze if context.nil?

      Identifier.new(context.trace_id, context.span_id).freeze
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ddtrace-0.51.1 lib/ddtrace/correlation.rb
ddtrace-0.51.0 lib/ddtrace/correlation.rb