Sha256: a00fe4b57f6891441596f9ba01952a6b518309d44988e9eb66cec2547b0469ee

Contents?: true

Size: 859 Bytes

Versions: 1

Compression:

Stored size: 859 Bytes

Contents

# frozen_string_literal: true

module Kiev
  module RequestLogger
    module Mixin
      NEW_LINE = "\n"
      LOG_ERROR = "ERROR"

      def wrap_request_logger(event, **data, &_block)
        began_at = Time.now
        error = nil

        begin
          return_value = yield
        rescue StandardError => exception
          error = exception
        end

        begin
          data[:request_duration] = ((Time.now - began_at) * 1000).round(3)
          if error
            data[:error_class] = error.class.name
            data[:error_message] = error.message[0..5000]
            data[:error_backtrace] = Array(error.backtrace).join(NEW_LINE)[0..5000]
            data[:level] = LOG_ERROR
          end

          Kiev.event(event, data)
        ensure
          raise error if error
          return_value
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
kiev-4.3.0 lib/kiev/request_logger.rb