2

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

谢谢。

4

2 回答 2

2

在 UNIX/Linux 上,使用名为logrotate的程序来执行日志文件轮换是很常见的。Slicehost 有几篇关于如何使用它的好文章。

对于 Phusion Passenger 部署,您可以使用如下示例所示的配置。显然适当地调整目录和轮换频率。

/home/deploy/public_html/railsapp/shared/log/*.log {
  每周
  失踪的
  旋转 30
  压缩
  延迟压缩
  通知空
  共享脚本
  后旋转
    触摸 /home/deploy/public_html/railsapp/current/tmp/restart.txt
  尾注
}
于 2010-08-03T16:47:39.350 回答
1

如果你有很多请求同时进来,那么是时候让 Rails 轮换日志了。如果一个流试图写入一个文件(logger.rb 代码有一行写着:@dev.stat.size)并且当文件不存在时(因为它正在被旋转),那么它会抛出一个致命的异常,并且基本上服务器停止响应请求(它不一定会关闭,但会根据请求进行轰炸。

于 2012-02-02T17:14:52.033 回答