Module: Kiev::RequestLogger::Mixin

Included in:
Shoryuken::Middleware::RequestLogger, Sidekiq::RequestLogger
Defined in:
lib/kiev/request_logger.rb

Constant Summary collapse

NEW_LINE =
"\n"
LOG_ERROR =
"ERROR"

Instance Method Summary collapse

Instance Method Details

#wrap_request_logger(event, **data, &_block) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 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