Class: PactBroker::Logging::OpenTelemetryAppenderSetup

Inherits:
Object
  • Object
show all
Defined in:
lib/pact_broker/logging/open_telemetry_appender_setup.rb

Overview

Adds semantic_logger's :open_telemetry appender when configured, without taking a hard dependency on the OpenTelemetry gems.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(runtime_configuration) ⇒ OpenTelemetryAppenderSetup

Returns a new instance of OpenTelemetryAppenderSetup.



13
14
15
# File 'lib/pact_broker/logging/open_telemetry_appender_setup.rb', line 13

def initialize(runtime_configuration)
  @runtime_configuration = runtime_configuration
end

Class Method Details

.call(runtime_configuration) ⇒ Object



9
10
11
# File 'lib/pact_broker/logging/open_telemetry_appender_setup.rb', line 9

def self.call(runtime_configuration)
  new(runtime_configuration).call
end

Instance Method Details

#callObject

Returns the added (or already-present) appender, or nil if none was added.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/pact_broker/logging/open_telemetry_appender_setup.rb', line 18

def call
  case @runtime_configuration.log_otel_enabled
  when false
    nil
  when true
    unless otel_available?
      raise PactBroker::ConfigurationError,
        "log_otel_enabled is set to true but the opentelemetry-logs-sdk gem could not be loaded. " \
        "Add it to your Gemfile, or set log_otel_enabled to auto/false."
    end
    add_appender(warn_if_no_provider: true)
  else # :auto
    add_appender(warn_if_no_provider: false) if otel_available? && otel_provider_configured?
  end
end