Class: Grape::Middleware::Logger

Inherits:
Globals
  • Object
show all
Defined in:
lib/grape/middleware/logger/version.rb,
lib/grape/middleware/logger.rb

Constant Summary collapse

VERSION =
'1.1.0'

Instance Method Summary collapse

Instance Method Details

#after(status) ⇒ Object



39
40
41
42
# File 'lib/grape/middleware/logger.rb', line 39

def after(status)
  logger.info "Completed #{status} in #{((Time.now - start_time) * 1000).round(2)}ms"
  logger.info ''
end

#after_exception(e) ⇒ Object

Helpers



48
49
50
51
# File 'lib/grape/middleware/logger.rb', line 48

def after_exception(e)
  logger.info %Q(  Error: #{e.message})
  after(500)
end

#after_failure(error) ⇒ Object



53
54
55
56
# File 'lib/grape/middleware/logger.rb', line 53

def after_failure(error)
  logger.info %Q(  Error: #{error[:message]}) if error[:message]
  after(error[:status])
end

#beforeObject



7
8
9
10
11
12
13
# File 'lib/grape/middleware/logger.rb', line 7

def before
  start_time
  super # sets env['grape.*']
  logger.info ''
  logger.info %Q(Started #{env['grape.request'].request_method} "#{env['grape.request'].path}")
  logger.info %Q(  Parameters: #{parameters})
end

#call!(env) ⇒ Object

Note:

Error and exception handling are required for the after hooks Exceptions are logged as a 500 status and re-raised Other “errors” are caught, logged and re-thrown



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/grape/middleware/logger.rb', line 18

def call!(env)
  @env = env
  before
  error = catch(:error) do
    begin
      @app_response = @app.call(@env)
    rescue => e
      after_exception(e)
      raise e
    end
    nil
  end
  if error
    after_failure(error)
    throw(:error, error)
  else
    after(@app_response.status)
  end
  @app_response
end

#loggerObject



72
73
74
75
# File 'lib/grape/middleware/logger.rb', line 72

def logger
  @logger ||= @options[:logger]
  @logger ||= defined?(Rails) && Rails.logger.present? ? Rails.logger : Logger.new(STDOUT)
end

#parametersObject



58
59
60
61
62
63
64
65
66
# File 'lib/grape/middleware/logger.rb', line 58

def parameters
  request_params = env['grape.request.params'].to_hash
  request_params.merge!(env['action_dispatch.request.request_parameters'] || {}) # for Rails
  if @options[:filter]
    @options[:filter].filter(request_params)
  else
    request_params
  end
end

#start_timeObject



68
69
70
# File 'lib/grape/middleware/logger.rb', line 68

def start_time
  @start_time ||= Time.now
end