diff --git a/README.md b/README.md index aa22b24..4eadf38 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/lib/grape_logging/middleware/request_logger.rb b/lib/grape_logging/middleware/request_logger.rb index fbaebaf..11ebdeb 100644 --- a/lib/grape_logging/middleware/request_logger.rb +++ b/lib/grape_logging/middleware/request_logger.rb @@ -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 diff --git a/lib/grape_logging/reporters/logger_reporter.rb b/lib/grape_logging/reporters/logger_reporter.rb index 8027283..9af7636 100644 --- a/lib/grape_logging/reporters/logger_reporter.rb +++ b/lib/grape_logging/reporters/logger_reporter.rb @@ -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 \ No newline at end of file +end diff --git a/spec/lib/grape_logging/middleware/request_logger_spec.rb b/spec/lib/grape_logging/middleware/request_logger_spec.rb index 2c4ea80..260ba8e 100644 --- a/spec/lib/grape_logging/middleware/request_logger_spec.rb +++ b/spec/lib/grape_logging/middleware/request_logger_spec.rb @@ -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