cron job如果加载rails环境来使用Logger,这样就有多个进程操作Logger,在Logger做Shifting时会有异常,比较取巧的解决方法就是在environment.rb里加一个常量判断(sliu大人的建议):
然后在cron job里也加上一行常量定义:
这样就避免了多个进程去Shifting同一个Logger文件
if !$CRON_JOB_STATUS
$LOG = Logger.new(File.join(RAILS_ROOT, '/log/rails.log'),'daily')
else
$LOG = Logger.new(File.join(RAILS_ROOT, '/log/cronjob.log'),'daily')
end
然后在cron job里也加上一行常量定义:
$CRON_JOB_STATUS = true
require File.dirname(__FILE__)+'/config/environment'
XXX.do_xxx
这样就避免了多个进程去Shifting同一个Logger文件