A logger for Grape apps that uses Lograge
Logs:
- Request path
- Parameters
- Endpoint class name and handler
- Response status
- Duration of the request
- Exceptions
- Error responses from
error!
Installation
Add this line to your application's Gemfile:
gem 'grape', '>= 0.14.0'
gem 'grape-middleware-lograge'
Usage
class API < Grape::API
# @note Make sure this above you're first +mount+
use Grape::Middleware::Lograge
end
Server requests will be logged to STDOUT by default.
Custom setup
Customize the logging by passing the filter
option. Example using parameter sanitization:
use Grape::Middleware::Lograge, {
filter: CustomFilter.new
}
The filter
option can be any object that responds to .filter(params_hash)
Example output
Get
Started GET "/v1/reports/101" at 2015-12-11 15:40:51 -0800
Processing by ReportsAPI#reports/:id
Parameters: {"id"=>"101"}
Completed 200 in 6.29ms
Error
Started POST "/v1/reports" at 2015-12-11 15:42:33 -0800
Processing by ReportsAPI#reports
Parameters: {"name"=>"foo", "password"=>"[FILTERED]"}
Error: {:error=>"undefined something something bad", :detail=>"Whoops"}
Completed 422 in 6.29ms
Using Rails?
Rails.application.config.filter_parameters
will be used automatically as the default param filterer.
Rack
If you're using the rackup
command to run your server in development, pass the -q
flag to silence the default rack logger.
Credits
This code is forked from grape-middleware-logger.
Big thanks to jadent's question/answer on stackoverflow for easily logging error responses. Borrowed some motivation from the grape_logging gem and would love to see these two consolidated at some point.
Contributing
- Fork it ( https://github.com/tchak/grape-middleware-lograge/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request