Class: DiscordRDA::Tracer
- Inherits:
-
Object
- Object
- DiscordRDA::Tracer
- Defined in:
- lib/discord_rda/core/tracer.rb
Defined Under Namespace
Classes: Span
Instance Attribute Summary collapse
-
#enabled ⇒ Object
readonly
Returns the value of attribute enabled.
Instance Method Summary collapse
-
#initialize(enabled: false, logger: nil) ⇒ Tracer
constructor
A new instance of Tracer.
- #with_span(name, **attributes) ⇒ Object
Constructor Details
#initialize(enabled: false, logger: nil) ⇒ Tracer
Returns a new instance of Tracer.
9 10 11 12 |
# File 'lib/discord_rda/core/tracer.rb', line 9 def initialize(enabled: false, logger: nil) @enabled = enabled @logger = logger end |
Instance Attribute Details
#enabled ⇒ Object (readonly)
Returns the value of attribute enabled.
7 8 9 |
# File 'lib/discord_rda/core/tracer.rb', line 7 def enabled @enabled end |
Instance Method Details
#with_span(name, **attributes) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/discord_rda/core/tracer.rb', line 14 def with_span(name, **attributes) return yield unless enabled span = Span.new(name: name, attributes: attributes, started_at: Time.now.utc) if defined?(::OpenTelemetry::Trace) tracer = ::OpenTelemetry.tracer_provider.tracer('discord_rda') tracer.in_span(name, attributes: attributes) { yield } else yield end rescue StandardError => e span.error = e raise ensure if enabled span.finished_at = Time.now.utc @logger&.debug( 'Trace span', span: span.name, duration_ms: ((span.finished_at - span.started_at) * 1000).round(2), error: span.error&.class&.name, **span.attributes ) end end |