Class: Console::Adapter::Rails::ActionController::LogSubscriber
- Inherits:
-
ActiveSupport::LogSubscriber
- Object
- ActiveSupport::LogSubscriber
- Console::Adapter::Rails::ActionController::LogSubscriber
- Defined in:
- lib/console/adapter/rails/action_controller.rb
Overview
A Rails log subscriber which is compatible with ‘Console::Logger`. It receives events from `ActiveSupport::Notifications` and logs them to the console.
Instance Method Summary collapse
-
#process_action(event) ⇒ Object
Log an ActionController ‘process_action` event.
Instance Method Details
#process_action(event) ⇒ Object
Log an ActionController ‘process_action` event.
Includes the following fields:
-
‘subject`: “process_action.action_controller”
-
‘controller`: The name of the controller.
-
‘action`: The action performed.
-
‘format`: The format of the response.
-
‘method`: The HTTP method of the request.
-
‘path`: The path of the request.
-
‘status`: The HTTP status code of the response.
-
‘view_runtime`: The time spent rendering views in milliseconds.
-
‘db_runtime`: The time spent querying the database in milliseconds.
-
‘location`: The redirect location if any.
-
‘allocations`: The number of allocations performed.
-
‘duration`: The total time spent processing the request in milliseconds.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/console/adapter/rails/action_controller.rb', line 32 def process_action(event) payload = event.payload.dup # This may contain sensitive information: params = payload.delete(:params) # These objects are not useful and may not serialize correctly: headers = payload.delete(:headers) request = payload.delete(:request) response = payload.delete(:response) if request and ip = request.remote_ip payload[:source_address] = ip end if response and headers = response.headers # Extract redirect location if any: location = response.headers['Location'] || response.headers['location'] if location payload[:location] = location end end payload[:allocations] = event.allocations payload[:duration] = event.duration Console.logger.info(event.name, **payload) end |