Rails日志记录错误:“故障安全响应期间出错:转移失败。” ...有一个优雅的解决方案吗?

时间:2010-08-03 16:32:36

标签: ruby-on-rails ruby logging system-administration passenger

我已经在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 文件。

感谢。

2 个答案:

答案 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),并且该文件不存在(因为它正在被旋转),那么它会抛出一个致命的异常,基本上服务器停止响应请求(它不一定会关闭,但会对请求进行轰炸。