diff --git a/lib/rack/cache/context.rb b/lib/rack/cache/context.rb index 6833a27..052bf5b 100644 --- a/lib/rack/cache/context.rb +++ b/lib/rack/cache/context.rb @@ -79,7 +79,7 @@ def call!(env) if verbose? message = "cache: [%s %s] %s\n" % [@request.request_method, @request.fullpath, trace] - @env['rack.errors'].write(message) + log_info(message) end # tidy up response a bit @@ -280,7 +280,20 @@ def strip_ignore_headers(response) end def log_error(exception) - @env['rack.errors'].write("cache error: #{exception.message}\n#{exception.backtrace.join("\n")}\n") + message = "cache error: #{exception.message}\n#{exception.backtrace.join("\n")}\n" + log(:error, message) + end + + def log_info(message) + log(:info, message) + end + + def log(level, message) + if @env['rack.logger'] + @env['rack.logger'].send(level, message) + else + @env['rack.errors'].write(message) + end end end end diff --git a/test/context_test.rb b/test/context_test.rb index 36e7022..3ba1c48 100644 --- a/test/context_test.rb +++ b/test/context_test.rb @@ -913,4 +913,19 @@ response.body.should.equal 'Hello World' cache.trace.should.include :pass end + + it 'logs to rack.logger if available' do + logger = Class.new do + attr_reader :logged_level + + def info(message) + @logged_level = "info" + end + end.new + + respond_with 200 + get '/', 'rack.logger' => logger + response.should.be.ok + logger.logged_level.should.equal "info" + end end