延迟作业登录问题?

45

我无法从delayed_job获取任何日志输出,也不确定我的任务是否在启动。

这是我的Procfile:

web:     bundle exec rails server
worker:  bundle exec rake jobs:work
worker:  bundle exec clockwork app/clock.rb

以下是工作内容:

class ScanningJob
  def perform
    logger.info "logging from delayed_job"
  end

  def after(job)
    Rails.logger.info "logging from after delayed_job"
  end
end

我看到时钟输出到系统输出,也能看到工作执行者启动了,但是我的日志语句从未打印出来。我尝试使用 puts ,但是仍然无效。

我的时钟文件非常简单:

every(3.seconds, 'refreshlistings') { Delayed::Job.enqueue ScanningJob.new }
我只是想看到它工作,但由于缺少日志记录,我无法知道发生了什么。这里发生了什么?

可能是Delayed_job未记录日志的重复问题。 - deefour
1个回答

107

当我需要从延迟作业中输出日志时,我发现这个问题相当有帮助。

config/initializers/delayed_job.rb中添加以下代码:

Delayed::Worker.logger = Logger.new(File.join(Rails.root, 'log', 'dj.log'))

然后,在我的工作中,我使用以下代码将日志输出:

Delayed::Worker.logger.info("Log Entry")

这将导致文件log/dj.log被写入。它可以用于开发、测试和生产环境。


1
请注意,根据您的设置,logger.debug 日志可能默认隐藏,因此我建议使用更高一级别的 logger.info - Kevin Cooper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接