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)
```
### 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
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]
Reporters::ActiveSupportReporter.new(@options[:instrumentation_key])
else
Reporters::LoggerReporter.new(@options[:logger], @options[:formatter])
Reporters::LoggerReporter.new(@options[:logger], @options[:formatter], @options[:log_level])
end
end

View file

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

View file

@ -38,6 +38,16 @@ describe GrapeLogging::Middleware::RequestLogger do
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
let(:app) { proc{ [500, {} , nil] } }
it 'should log "fail" instead of a status' do