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.('../../VERSION', __dir__)).chomp.freeze
Class Method Summary collapse
Class Method Details
.config ⇒ Object
62 63 64 |
# File 'lib/rails_semantic_logging/configuration.rb', line 62 def config @config ||= Configuration.new end |
.configure {|config| ... } ⇒ Object
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 |