Class: Harbor::RequestLogger

Inherits:
Object
  • Object
show all
Defined in:
lib/harbor/logging/request_logger.rb

Class Method Summary collapse

Class Method Details

.error(exception, request, response, trace) ⇒ Object



27
28
29
# File 'lib/harbor/logging/request_logger.rb', line 27

def self.error(exception, request, response, trace)
  Logging::Logger['error'] << trace
end

.info(request, response, start_time, end_time) ⇒ Object

Logs requests and their params the configured request logger.

Format:

#application      #time                   #duration   #ip              #method #uri      #status   #params
[PhotoManagement] [04-02-2009 @ 14:22:40] [0.12s]     [64.134.226.23] [GET]    /products (200)     {"order" => "desc"}


11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/harbor/logging/request_logger.rb', line 11

def self.info(request, response, start_time, end_time)
  case
  when response.status >= 500 then status = "\033[0;31m#{response.status}\033[0m" # prints the status value in red
  when response.status >= 400 then status = "\033[0;33m#{response.status}\033[0m" # prints the status value in yellow
  else status = "\033[0;32m#{response.status}\033[0m"                             # prints the status value in green
  end

  message = "[#{self.class}] [#{start_time.strftime('%m-%d-%Y @ %H:%M:%S')}] [#{"%2.2fs" % (end_time - start_time)}] [#{request.remote_ip}] [#{request.request_method}] #{request.path_info} (#{status})"
  message << "\t #{request.params.inspect}" unless request.params.empty?
  message << "\n"

  if (request_logger = Logging::Logger["request"]).info?
    request_logger << message
  end
end