Add log_level option (#39)

This commit is contained in:
Joel C 2017-05-15 12:40:44 +02:00 committed by Adrian Serafin
parent 4ca6823d36
commit 2a0c368551
4 changed files with 27 additions and 4 deletions

View file

@ -78,6 +78,18 @@ log_file.sync = true
logger Logger.new GrapeLogging::MultiIO.new(STDOUT, log_file) logger Logger.new GrapeLogging::MultiIO.new(STDOUT, log_file)
``` ```
### Set the log level
You can control the level used to log. The default is `info`.
```ruby
class MyAPI < Grape::API
use GrapeLogging::Middleware::RequestLogger,
logger: logger,
log_level: 'debug'
end
```
### 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.

View file

@ -16,7 +16,7 @@ module GrapeLogging
@reporter = if options[:instrumentation_key] @reporter = if options[:instrumentation_key]
Reporters::ActiveSupportReporter.new(@options[:instrumentation_key]) Reporters::ActiveSupportReporter.new(@options[:instrumentation_key])
else else
Reporters::LoggerReporter.new(@options[:logger], @options[:formatter]) Reporters::LoggerReporter.new(@options[:logger], @options[:formatter], @options[:log_level])
end end
end end

View file

@ -1,14 +1,15 @@
module Reporters module Reporters
class LoggerReporter class LoggerReporter
def initialize(logger, formatter) def initialize(logger, formatter, log_level)
@logger = logger || Logger.new(STDOUT) @logger = logger || Logger.new(STDOUT)
@log_level = log_level || :info
if @logger.respond_to?(:formatter=) if @logger.respond_to?(:formatter=)
@logger.formatter = formatter || @logger.formatter || GrapeLogging::Formatters::Default.new @logger.formatter = formatter || @logger.formatter || GrapeLogging::Formatters::Default.new
end end
end end
def perform(params) def perform(params)
@logger.info params @logger.send(@log_level, params)
end end
end end
end end

View file

@ -38,6 +38,16 @@ describe GrapeLogging::Middleware::RequestLogger do
end end
end end
%w[info error debug].each do |level|
context "with level #{level}" do
it 'should log at correct level' do
options[:log_level] = level
expect(logger).to receive(level)
subject
end
end
end
context 'with a nil response' do context 'with a nil response' do
let(:app) { proc{ [500, {} , nil] } } let(:app) { proc{ [500, {} , nil] } }
it 'should log "fail" instead of a status' do it 'should log "fail" instead of a status' do