我已经在environment.rb中配置了我的Rails 2.3.8记录器以便每天轮换:
config.logger = Logger.new("#{RAILS_ROOT}/logs/#{RAILS_ENV}.log", 'daily')
每天早上我都会照常开心:
Error during failsafe response: Shifting failed.
这是否有一个体面/优雅/更好的解决方案?
我过去所做的只是设置一个cron作业,以注意何时发生这种情况,并在应用程序的tmp /目录中删除Passenger restart.txt 文件。
感谢。
答案 0 :(得分:2)
在UNIX / Linux上使用名为 logrotate 的程序来执行日志文件轮换非常常见。关于如何使用它的Slicehost have a couple of nice articles。
对于Phusion Passenger部署,您可以使用如下示例的配置。显然,适当调整目录和旋转频率。
/home/deploy/public_html/railsapp/shared/log/*.log { weekly missingok rotate 30 compress delaycompress notifempty sharedscripts postrotate touch /home/deploy/public_html/railsapp/current/tmp/restart.txt endscript }
答案 1 :(得分:1)
如果有多个请求同时进入,则Rails可以旋转日志。如果一个流试图写入一个文件(logger.rb代码有一行说明:@ dev.stat.size),并且该文件不存在(因为它正在被旋转),那么它会抛出一个致命的异常,基本上服务器停止响应请求(它不一定会关闭,但会对请求进行轰炸。