module Telemetry::Logger::ExceptionHandler
Public Instance Methods
elastic_apm?()
click to toggle source
# File lib/telemetry/logger/exception_handler.rb, line 20 def elastic_apm? @elastic_apm unless @elastic_apm.nil? @elastic_apm = Kernel.const_defined? 'ElasticAPM' end
exception(exc, level: 'error', backtrace: true, backtrace_limit: 20, **opts)
click to toggle source
# File lib/telemetry/logger/exception_handler.rb, line 4 def exception(exc, level: 'error', backtrace: true, backtrace_limit: 20, **opts) level = 'unknown' unless %w[debug info warn error fatal].include? level.to_s Telemetry::Logger.send(level, "#{exc.class}: #{exc.message}") Telemetry::Logger.send(level, exc.backtrace[0..backtrace_limit]) if backtrace && !exc.backtrace.nil? send_to_apm(exc, level: level) raise(exc) if opts[:raise] end
open_telemetry?()
click to toggle source
# File lib/telemetry/logger/exception_handler.rb, line 26 def open_telemetry? @open_telemetry unless @open_telemetry.nil? @open_telemetry = Kernel.const_defined? 'OpenTelemetry' end
send_to_apm(exc, **opts)
click to toggle source
# File lib/telemetry/logger/exception_handler.rb, line 14 def send_to_apm(exc, **opts) handled = opts[:handled] || %w[info debug].include?(opts[:level]) ::ElasticAPM.report(exc, handled: handled) if elastic_apm? ::OpenTelemetry.handle_error(exception: exc, message: exc.message) if open_telemetry? end