Add syntax highlighting to README.md (#30)

This commit is contained in:
Glauco Custódio 2016-08-04 17:45:08 -03:00 committed by Adrian Serafin
parent 2054d412c3
commit e953a23d25

View file

@ -20,9 +20,11 @@ Or install it yourself as:
In your api file (somewhere on the top) In your api file (somewhere on the top)
```ruby
require 'grape_logging' require 'grape_logging'
logger.formatter = GrapeLogging::Formatters::Default.new logger.formatter = GrapeLogging::Formatters::Default.new
use GrapeLogging::Middleware::RequestLogger, { logger: logger } use GrapeLogging::Middleware::RequestLogger, { logger: logger }
```
**ProTip:** If your logger doesn't support setting formatter you can remove this line - it's optional **ProTip:** If your logger doesn't support setting formatter you can remove this line - it's optional
@ -37,15 +39,16 @@ With the default configuration you will get nice log message
If you prefer some other format I strongly encourage you to do pull request with new formatter class ;) If you prefer some other format I strongly encourage you to do pull request with new formatter class ;)
You can change the formatter like so You can change the formatter like so
```ruby
class MyAPI < Grape::API class MyAPI < Grape::API
use GrapeLogging::Middleware::RequestLogger, logger: logger, format: MyFormatter.new use GrapeLogging::Middleware::RequestLogger, logger: logger, format: MyFormatter.new
end end
```
### Customising What Is Logged ### Customising What Is Logged
You can include logging of other parts of the request / response cycle by including subclasses of `GrapeLogging::Loggers::Base` You can include logging of other parts of the request / response cycle by including subclasses of `GrapeLogging::Loggers::Base`
```ruby
class MyAPI < Grape::API class MyAPI < Grape::API
use GrapeLogging::Middleware::RequestLogger, use GrapeLogging::Middleware::RequestLogger,
logger: logger, logger: logger,
@ -54,6 +57,7 @@ You can include logging of other parts of the request / response cycle by includ
GrapeLogging::Loggers::ClientEnv.new, GrapeLogging::Loggers::ClientEnv.new,
GrapeLogging::Loggers::RequestHeaders.new ] GrapeLogging::Loggers::RequestHeaders.new ]
end end
```
#### FilterParameters #### FilterParameters
The `FilterParameters` logger will filter out sensitive parameters from your logs. If mounted inside rails, will use the `Rails.application.config.filter_parameters` by default. Otherwise, you must specify a list of keys to filter out. The `FilterParameters` logger will filter out sensitive parameters from your logs. If mounted inside rails, will use the `Rails.application.config.filter_parameters` by default. Otherwise, you must specify a list of keys to filter out.
@ -67,45 +71,48 @@ The `RequestHeaders` logger will add `request headers` in your log.
### Logging to file and STDOUT ### Logging to file and STDOUT
You can log to file and STDOUT at the same time, you just need to assign new logger You can log to file and STDOUT at the same time, you just need to assign new logger
```ruby
log_file = File.open('path/to/your/logfile.log', 'a') log_file = File.open('path/to/your/logfile.log', 'a')
log_file.sync = true log_file.sync = true
logger Logger.new GrapeLogging::MultiIO.new(STDOUT, log_file) logger Logger.new GrapeLogging::MultiIO.new(STDOUT, log_file)
```
### Logging via Rails instrumentation ### Logging via Rails instrumentation
You can choose to not pass the logger to ```grape_logging``` but instead send logs to Rails instrumentation in order to let Rails and its configured Logger do the log job, for example. You can choose to not pass the logger to ```grape_logging``` but instead send logs to Rails instrumentation in order to let Rails and its configured Logger do the log job, for example.
First, config ```grape_logging```, like that: First, config ```grape_logging```, like that:
```ruby
class MyAPI < Grape::API class MyAPI < Grape::API
use GrapeLogging::Middleware::RequestLogger, use GrapeLogging::Middleware::RequestLogger,
instrumentation_key: 'grape_key', instrumentation_key: 'grape_key',
include: [ GrapeLogging::Loggers::Response.new, include: [ GrapeLogging::Loggers::Response.new,
GrapeLogging::Loggers::FilterParameters.new ] GrapeLogging::Loggers::FilterParameters.new ]
end end
```
and then add an initializer in your Rails project: and then add an initializer in your Rails project:
```ruby
# config/initializers/instrumentation.rb # config/initializers/instrumentation.rb
# Subscribe to grape request and log with Rails.logger # Subscribe to grape request and log with Rails.logger
ActiveSupport::Notifications.subscribe('grape_key') do |name, starts, ends, notification_id, payload| ActiveSupport::Notifications.subscribe('grape_key') do |name, starts, ends, notification_id, payload|
Rails.logger.info payload Rails.logger.info payload
end end
```
The idea come from here: https://gist.github.com/teamon/e8ae16ffb0cb447e5b49 The idea come from here: https://gist.github.com/teamon/e8ae16ffb0cb447e5b49
### Logging exceptions ### Logging exceptions
If you want to log exceptions you can do it like this If you want to log exceptions you can do it like this
```ruby
class MyAPI < Grape::API class MyAPI < Grape::API
rescue_from :all do |e| rescue_from :all do |e|
MyAPI.logger.error e MyAPI.logger.error e
#do here whatever you originally planned to do :) #do here whatever you originally planned to do :)
end end
end end
```
## Development ## Development
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment. After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.