Class: TIMEx::Telemetry::Adapters::Logger

Inherits:
Base
  • Object
show all
Defined in:
lib/timex/telemetry/adapters.rb

Overview

Emits a single structured log line per #finish with a conservative key allowlist.

Constant Summary collapse

DEFAULT_SAFE_KEYS =

Keys considered safe to log by default. Application-supplied data like ‘headers` or block arguments are excluded to avoid leaking secrets/PII through structured logs. `origin` is whitelisted because Deadline.from_header enforces `ORIGIN_PATTERN` so the value can only be `[A-Za-z0-9_.-]+`. Pass `extra_keys:` to include additional whitelisted keys.

%i[event strategy outcome deadline_ms elapsed_ms error_class
soft_ms grace_ms estimate_ms budget_ms
soft_timeout hard_timeout depth skew_ms origin
reason].freeze

Instance Method Summary collapse

Methods inherited from Base

#emit, #start

Constructor Details

#initialize(logger, extra_keys: []) ⇒ Logger

Returns a new instance of Logger.

Parameters:

  • logger (#info)

    logger receiving #info calls

  • extra_keys (Array<Symbol, String>) (defaults to: [])

    additional payload keys to include



56
57
58
59
60
# File 'lib/timex/telemetry/adapters.rb', line 56

def initialize(logger, extra_keys: [])
  super()
  @logger    = logger
  @safe_keys = (DEFAULT_SAFE_KEYS + Array(extra_keys).map(&:to_sym)).uniq.freeze
end

Instance Method Details

#finish(event:, payload:) ⇒ void

This method returns an undefined value.

Parameters:

  • event (Symbol, String)
  • payload (Hash{Symbol => Object})


65
66
67
# File 'lib/timex/telemetry/adapters.rb', line 65

def finish(event:, payload:)
  @logger.info("[timex] #{event} #{filtered(payload).inspect}")
end