setup and expose logger

This commit is contained in:
Konstantin Haase 2011-03-12 17:19:04 +01:00
parent 1d9034ff80
commit 85a80e0152
2 changed files with 49 additions and 1 deletions

View File

@ -149,6 +149,11 @@ module Sinatra
request.session
end
# Access shared logger object.
def logger
request.logger
end
# Look up a media type by file extension in Rack's mime registry.
def mime_type(type)
Base.mime_type(type)
@ -1232,8 +1237,8 @@ module Sinatra
# an instance of this class as end point.
def build(*args, &bk)
builder = Rack::Builder.new
setup_logging builder
builder.use Rack::Session::Cookie if sessions?
builder.use Rack::CommonLogger if logging?
builder.use Rack::MethodOverride if method_override?
builder.use ShowExceptions if show_exceptions?
middleware.each { |c,a,b| builder.use(c, *a, &b) }
@ -1246,6 +1251,19 @@ module Sinatra
end
private
def setup_logging(builder)
if logging?
builder.use Rack::CommonLogger
if logging.respond_to? :to_int
builder.use Rack::Logger, logging
else
builder.use Rack::Logger
end
else
builder.use Rack::NullLogger
end
end
def detect_rack_handler
servers = Array(server)
servers.each do |server_name|

View File

@ -779,6 +779,36 @@ class HelpersTest < Test::Unit::TestCase
end
end
describe 'logger' do
it 'logging works when logging is enabled' do
mock_app do
enable :logging
get '/' do
logger.info "Program started"
logger.warn "Nothing to do!"
end
end
io = StringIO.new
get '/', {}, 'rack.errors' => io
assert io.string.include?("INFO -- : Program started")
assert io.string.include?("WARN -- : Nothing to do")
end
it 'logging works when logging is disable, but no output is produced' do
mock_app do
disable :logging
get '/' do
logger.info "Program started"
logger.warn "Nothing to do!"
end
end
io = StringIO.new
get '/', {}, 'rack.errors' => io
assert !io.string.include?("INFO -- : Program started")
assert !io.string.include?("WARN -- : Nothing to do")
end
end
module ::HelperOne; def one; '1'; end; end
module ::HelperTwo; def two; '2'; end; end