class OpenTracing::Instrumentation::Common::ErrorWriter

ErrorWriter can be used to write error tag and log to span

Constants

ERROR_TAG
LOG_ERROR_EVENT

Attributes

log_error_event[R]
set_error_tag[R]

Public Class Methods

new( set_error_tag: true, log_error_event: true ) click to toggle source

@param set_error_tag [TrueClass,ErrorClass] enable set error tag @param log_error_event [TrueClass, ErrorClass] enable log exception

# File lib/opentracing/instrumentation/common/error_writer.rb, line 18
def initialize(
  set_error_tag: true,
  log_error_event: true
)
  @set_error_tag = set_error_tag
  @log_error_event = log_error_event
end

Public Instance Methods

==(other) click to toggle source
# File lib/opentracing/instrumentation/common/error_writer.rb, line 35
def ==(other)
  set_error_tag == other.set_error_tag &&
    log_error_event == other.log_error_event
end
write_error(span, exception, event: LOG_ERROR_EVENT) click to toggle source

Write error tag and log error event @param span [OpenTracing::Span] target for tag and log @param exception [Exception] logged to tag

# File lib/opentracing/instrumentation/common/error_writer.rb, line 29
def write_error(span, exception, event: LOG_ERROR_EVENT)
  tag_error(span)

  log_error(span, exception, event)
end

Private Instance Methods

log_error(span, exception, event) click to toggle source
# File lib/opentracing/instrumentation/common/error_writer.rb, line 48
def log_error(span, exception, event)
  return unless log_error_event

  span.log_kv(
    event: event,
    'error.kind': exception.class.to_s,
    message: exception.to_s,
    stack: JSON.dump(exception.backtrace),
  )
end
tag_error(span) click to toggle source
# File lib/opentracing/instrumentation/common/error_writer.rb, line 42
def tag_error(span)
  return unless set_error_tag

  span.set_tag('error', true)
end