Sha256: 044176ad48900680fc97fdde1fa33b44342082251f9c3aaa3d0f3a764be832e3

Contents?: true

Size: 1.42 KB

Versions: 15

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true

require 'json'

module OpenTracing
  module Instrumentation
    module Common
      # ErrorWriter can be used to write error tag and log to span
      class ErrorWriter
        LOG_ERROR_EVENT = 'error'
        ERROR_TAG = 'error'

        attr_reader :set_error_tag
        attr_reader :log_error_event

        # @param set_error_tag [TrueClass,ErrorClass] enable set error tag
        # @param log_error_event [TrueClass, ErrorClass] enable log exception
        def initialize(
          set_error_tag: true,
          log_error_event: true
        )
          @set_error_tag = set_error_tag
          @log_error_event = log_error_event
        end

        # Write error tag and log error event
        # @param span [OpenTracing::Span] target for tag and log
        # @param exception [Exception] logged to tag
        def write_error(span, exception, event: LOG_ERROR_EVENT)
          tag_error(span)

          log_error(span, exception, event)
        end

        private

        def tag_error(span)
          return unless set_error_tag

          span.set_tag('error', true)
        end

        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
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
opentracing-instrumentation-0.1.14 lib/opentracing/instrumentation/common/error_writer.rb
opentracing-instrumentation-0.1.13 lib/opentracing/instrumentation/common/error_writer.rb
opentracing-instrumentation-0.1.12 lib/opentracing/instrumentation/common/error_writer.rb
opentracing-instrumentation-0.1.11 lib/opentracing/instrumentation/common/error_writer.rb
opentracing-instrumentation-0.1.10 lib/opentracing/instrumentation/common/error_writer.rb
opentracing-instrumentation-0.1.9 lib/opentracing/instrumentation/common/error_writer.rb
opentracing-instrumentation-0.1.8 lib/opentracing/instrumentation/common/error_writer.rb
opentracing-instrumentation-0.1.7 lib/opentracing/instrumentation/common/error_writer.rb
opentracing-instrumentation-0.1.6 lib/opentracing/instrumentation/common/error_writer.rb
opentracing-instrumentation-0.1.5 lib/opentracing/instrumentation/common/error_writer.rb
opentracing-instrumentation-0.1.4 lib/opentracing/instrumentation/common/error_writer.rb
opentracing-instrumentation-0.1.3 lib/opentracing/instrumentation/common/error_writer.rb
opentracing-instrumentation-0.1.2 lib/opentracing/instrumentation/common/error_writer.rb
opentracing-instrumentation-0.1.1 lib/opentracing/instrumentation/common/error_writer.rb
opentracing-instrumentation-0.1.0 lib/opentracing/instrumentation/common/error_writer.rb