我正在使用Windows上的Sinatra / Thin开发一个简单的Web服务
在我的应用中,我有以下内容来启用日志记录:
Dir.mkdir('log') unless File.exists?('log')
use Rack::CommonLogger, File.new('log/access.log', 'w')
服务器启动时,会创建文件。但是,在关闭服务器之前,没有任何内容写入文件。
另一方面,当我使用Logger时,就像这样:
logger = Logger.new('log/access.log', 10, 1024000)
use Rack::CommonLogger, logger
它甚至不会将条目写入日志文件,除了一行说明:
# Logfile created on 2013-02-13 11:23:45 +0200 by logger.rb/31641
我需要的是:
答案 0 :(得分:1)
我一直在我的sinatra应用程序中使用此解决方案(继承Sinatra :: Base)before do
env['rack.logger'] = Logger.new("log/#{App.environment}.log")
logger.datetime_format = "%Y/%m/%d @ %H:%M:%S "
logger.level = Logger::INFO if App.production?
end
答案 1 :(得分:0)
使用Sinatra经典样式应用程序,将文件的属性sync设置为true以进行记录,对我有用。在生产和发展:
Logger.class_eval { alias :write :'<<' }
flogger = File.open("log/app.log","a")
flogger.sync = true # This is what makes to write always
logger = Logger.new(flogger)
use Rack::CommonLogger, logger
来源: