我有一个配置了resque和resque-scheduler的应用程序。所有作业都运行正常,并将日志输出恢复到其日志文件。 resque-scheduler alos工作正常,按预期加载和处理作业。
我遇到的一个问题是调度程序似乎没有将任何内容记录到其日志文件中。
我按照这里的设置说明进行了操作
https://github.com/resque/resque-scheduler#logging
并在我的初始化程序中使用此代码。
# Define the location of the schedule
Resque.schedule = YAML.load_file(Rails.root.join('config', 'scheduled_jobs.yml'))
# Define the logger
Resque::Scheduler.configure do |c|
c.quiet = false
c.verbose = false
c.logfile = File.open("#{Rails.root}/log/resque_scheduler.log", 'w+')
c.logformat = 'text'
end
启动应用程序时,会创建resque_scheduler.log。
当我启动调度程序时,它将以下内容输出到stdout(我的VM上的终端窗口)。我原以为这会进入日志文件。
$ rake resque:scheduler TERM_CHILD=1
resque-scheduler: [INFO] 2015-07-17T14:34:27+01:00: Starting
resque-scheduler: [INFO] 2015-07-17T14:34:27+01:00: Loading Schedule
resque-scheduler: [INFO] 2015-07-17T14:34:27+01:00: Scheduling daily_job_email_overdue_items_to_admin
resque-scheduler: [INFO] 2015-07-17T14:34:27+01:00: Scheduling daily_job_to_update_status_to_overdue
resque-scheduler: [INFO] 2015-07-17T14:34:27+01:00: Schedules Loaded
我已经对互联网进行了搜索,但没有找到任何有同样问题的人。任何人都遇到了同样的问题或者工作过,并且可以建议我缺少的东西。
非常感谢。
答案 0 :(得分:7)
解决方案是在创建rake任务时使用LOGFILE环境变量。如果文件不存在,那么无论如何它都会创建它。启动指定日志文件的调度程序的基本rake任务如下所示。
rake resque:scheduler LOGFILE=./log/resque_scheduler.log
感觉有点愚蠢,以前我没有想到这一点。我刚认为调度程序的工作方式与resque相同,并从初始化程序中获取日志文件详细信息。