【发布时间】: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 - 谢谢,这可能正是正在发生的事情,你会建议我们如何解决这个问题?