Class: Grape::Middleware::Logger
- Inherits:
-
Globals
- Object
- Globals
- Grape::Middleware::Logger
- Defined in:
- lib/grape/middleware/logger/version.rb,
lib/grape/middleware/logger.rb
Constant Summary collapse
- VERSION =
'1.1.0'
Instance Method Summary collapse
- #after(status) ⇒ Object
-
#after_exception(e) ⇒ Object
Helpers.
- #after_failure(error) ⇒ Object
- #before ⇒ Object
- #call!(env) ⇒ Object
- #logger ⇒ Object
- #parameters ⇒ Object
- #start_time ⇒ Object
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.}) 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 |
#before ⇒ Object
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 |
#logger ⇒ Object
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 |
#parameters ⇒ Object
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_time ⇒ Object
68 69 70 |
# File 'lib/grape/middleware/logger.rb', line 68 def start_time @start_time ||= Time.now end |