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