Module: RailsSemanticLogging

Defined in:
lib/rails_semantic_logging/datadog/log_injection.rb,
lib/rails_semantic_logging.rb,
lib/rails_semantic_logging/railtie.rb,
lib/rails_semantic_logging/version.rb,
lib/rails_semantic_logging/configuration.rb,
lib/rails_semantic_logging/rspec/helpers.rb,
lib/rails_semantic_logging/rspec/matchers.rb,
lib/rails_semantic_logging/formatters/datadog.rb,
lib/rails_semantic_logging/job_logging/sidekiq_patch.rb,
lib/rails_semantic_logging/job_logging/active_job_patch.rb,
lib/rails_semantic_logging/action_controller/default_payload.rb

Overview

Monkey patches Datadog’s ActiveJob LogInjection to use hash-style correlation tags instead of string-style.

Background: Datadog ships LogInjection sub-modules (PerformNowPatch for Rails 6+, EnqueuePatch for the singleton enqueue path) and patches ActiveJob::Base by ‘prepend`ing them. By default they call `Datadog::Tracing.log_correlation`, which returns a flat string (“dd.trace_id=… dd.span_id=…”) and ends up under `event.tags`.

Once we patch ActiveJob::Logging#tag_logger to emit named tags, we want Datadog correlation to land in ‘named_tags` too, so traces and logs correlate properly in the Datadog UI. We achieve that by re-defining `perform_now` and `enqueue` on Datadog’s own patch modules to call ‘Datadog::Tracing.correlation.to_h` and pass the resulting hash to `logger.tagged`.

Because Datadog prepends those modules into ActiveJob::Base, our re-definitions take effect on every method dispatch — independent of load order, as long as ‘apply!` runs before any job is executed.

Defined Under Namespace

Modules: ActionController, Datadog, Formatters, JobLogging, RSpec Classes: Configuration, Error, Railtie

Constant Summary collapse

VERSION =
File.read(File.expand_path('../../VERSION', __dir__)).chomp.freeze

Class Method Summary collapse

Class Method Details

.configObject



62
63
64
# File 'lib/rails_semantic_logging/configuration.rb', line 62

def config
  @config ||= Configuration.new
end

.configure {|config| ... } ⇒ Object

Yields:



66
67
68
# File 'lib/rails_semantic_logging/configuration.rb', line 66

def configure
  yield(config)
end

.reset_config!Object



70
71
72
# File 'lib/rails_semantic_logging/configuration.rb', line 70

def reset_config!
  @config = Configuration.new
end