mirror of
https://github.com/samsonjs/grape_logging.git
synced 2026-04-27 14:57:40 +00:00
Add log_level option (#39)
This commit is contained in:
parent
4ca6823d36
commit
2a0c368551
4 changed files with 27 additions and 4 deletions
12
README.md
12
README.md
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue