module Kiev::RequestLogger::Mixin

Constants

LOG_ERROR
NEW_LINE

Public Instance Methods

wrap_request_logger(event, **data) { || ... } click to toggle source
# File lib/kiev/request_logger.rb, line 9
def wrap_request_logger(event, **data, &_block)
  began_at = Time.now
  error = nil

  begin
    return_value = yield
  rescue StandardError => e
    error = e
  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