我正在使用 Sidekiq 进行后台任务处理。同时,我也想将一些来自于这些任务的信息记录到日志文件中,但是我一直无法完成这个简单的任务。
以下是我正在运行的任务的示例:
class TestJob < ApplicationJob
queue_as :default
def perform
text = 'Print me to a file!'
Rails.logger.error "Rails.logger.info : #{text}"
logger.error "logger.info : #{text}"
end
end
在控制器操作中运行
TestJob.perform_now
时,会按预期将消息打印到服务器终端输出和logs/development.log
日志文件中。但是运行
TestJob.perform_later
不会打印我的消息。没有任何地方都没有打印,既不是在Sidekiq终端,也不是在服务器终端、日志文件中。我尝试过重定向日志,正如Sidekiq Logging wiki所建议的那样。但这些消息并没有被打印出来。
我感觉可能是我漏掉了什么关键步骤。
log/sidekiq.log
将具有TestJob
的“start”和“done”条目。那里是否有任何错误? - cschroedperform
方法的顶部:raise Rails.logger.inspect
。然后在 Sidekiq Dead Job 队列中,您将看到有关日志级别和输出位置的更多信息。 - cschroed