2012-02-01 22 views
0

我不想通过使用logrotate for UNIX来设置4个节点服务器和3个应用程序。为什么在旋转日志时导轨会发生崩溃?什么是在轨道上旋转日志的正确方法?

所以,我决定建立我的Rails应用程序具有以下里面的environment.rb:

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应用程序打破,一旦文件被翻了个身。

我想知道,什么是与轨道应用程序旋转日志的最佳方式是什么?它是logrotate吗?谢谢。

+1

我的猜测是rails应用程序崩溃,因为config.logger仅在应用程序启动时计算一次,而Logger未关闭并重新打开日志文件。当日志文件旋转时,您可以做到相当于从应用程序下拉出地毯。 (这是apachectl具有优雅的重启/重载方法的原因之一,以便干净地关闭所有打开的日志文件。) – 2012-02-01 19:48:12

+0

@nbrew - 谢谢,这可能正是发生了什么事情,你会如何建议我们解决这个问题? – Kamilski81 2012-02-02 07:07:01

回答

0

发生这种情况的原因是一个进程在另一个进程尝试旋转它的同时尝试旋转日志文件,发生竞态条件并且服务器停止响应请求,因为致命异常正在增加

+0

那么解决方案是什么 – vedant1811 2016-06-10 14:16:09

相关问题