我正在尝试在我的简单经典风格的 sinatra 应用程序中设置日志记录。(v1.3.2) 我在 environment.rb 文件中定义了所有设置,如下所示:
require 'sinatra'
require 'couchrest'
require 'couchrest_model'
require 'json'
require "net/http"
require "uri"
require 'shotgun' # to auto-restart server on page reload
enable :run, :logging
# CouchDB setup
configure do
SiteConfig = OpenStruct.new(
:url_base => 'http://localhost:4567/',
:url_base_db => 'http://localhost:5984/',
:db_name => 'adrequest'
)
end
# Logging setup
logger = Logger.new('vehicle.log')
use Rack::CommonLogger, logger
我的应用程序文件如下所示:
require './environment'
class Vehicle < CouchRest::Model::Base
use_database CouchRest.database!((SiteConfig.url_base_db || '') + SiteConfig.db_name)
property :url, String
timestamps!
validates_presence_of :url
end
get '/*' do
requesturl = params[:splat].first
@vehicle = Vehicle.new
@vehicle.url = requesturl
@vehicle.save
puts "logger: #{env['rack.logger']}"
puts "env: #{ENV['RACK_ENV']}"
logger.info "written to DB"
end
not_found do
halt 404, 'page not found'
end
结果是:
logger: #<Rack::NullLogger:0x007fb4f4ccc238>
env: development
该应用程序创建了一个“vehicle.log”文件,但它是空的。如何让 logger.info 写入我的“vehicle.log”文件?
我在这里阅读了 Sinatra README:http ://www.sinatrarb.com/intro#Logging 。这似乎暗示我所需要的只是:
enable :logging
然后 sinatra 将从 Rack::CommonLogger 获取其余配置,但它没有说明如何准确地做到这一点......
提前感谢您的任何想法!