【问题标题】:Why does rails crash when rotating logs? What is the proper way to rotate logs in rails?为什么旋转原木时rails会崩溃?在导轨中旋转原木的正确方法是什么?
【发布时间】:2012-02-24 12:00:27
【问题描述】:

我不想通过使用 UNIX 的 logrotate 来设置 4 个节点服务器和每个 3 个应用程序的麻烦。

所以我决定使用以下内部 environment.rb 设置我的 rails 应用程序:

  log_path = "#{Rails.root}/log/#{ENV['RAILS_ENV']}.log"
  shift_age = 'weekly' # you can either 1) specify 2 params 50, 1024bytes OR 2) specify 1 param 'daily | weekly | monthly'
  config.logger = Logger.new(log_path, shift_age)

但是,一旦文件翻转,这会导致 rails 应用程序中断。

我想知道,使用 rails 应用程序旋转日志的最佳方法是什么?它是对数旋转吗?谢谢。

【问题讨论】:

  • 我的猜测是 rails 应用程序崩溃了,因为 config.logger 仅在应用程序启动时评估一次,并且 Logger 没有关闭并重新打开日志文件。当日志文件旋转时,您相当于从应用程序下方拉出地毯。 (这是 apachectl 具有优雅重启/重新加载方法的部分原因,可以干净地关闭所有打开的日志文件。)
  • @nbrew - 谢谢,这可能正是正在发生的事情,你会建议我们如何解决这个问题?

标签: ruby-on-rails logrotate


【解决方案1】:

发生这种情况是因为一个进程在尝试轮换日志文件的同时另一个进程正在尝试轮换它,出现竞争条件,并且服务器停止响应请求,因为引发了致命异常

【讨论】:

  • 那么解决办法是什么
猜你喜欢
  • 2014-02-01
  • 2017-12-19
  • 2020-12-01
  • 2016-07-10
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
相关资源
最近更新 更多