sinatra/sinatra-contrib — pull request #124 by 907th (2014-03-19 07:21:18+00:00)
Title: Add support for custom loggers (controlled via `logger` setting)

**CustomLogger** extension allows you to define your own logger instance using `logger` setting.
That logger then will be available as #logger helper method in your routes and views.

### Classic Application

To define your custom logger instance in a classic application:

```ruby
require 'sinatra'
require 'sinatra/custom_logger'
require 'logger'

set :logger, Logger.new(STDOUT)

get '/' do
logger.info 'Some message' # STDOUT logger is used
# Other code...
end
```

### Modular Application

The same for modular application:

```ruby
require 'sinatra/base'
require 'sinatra/custom_logger'
require 'logger'

class MyApp < Sinatra::Base
helpers Sinatra::CustomLogger

configure :development, :production do
logger = Logger.new(File.open("#{root}/log/#{environment}.log", 'a'))
logger.level = Logger::DEBUG if development?
set :logger, logger
end

get '/' do
logger.info 'Some message' # File-based logger is used
# Other code...
end
end
```