ActiveJob + Sidekiq 6.0.3:如何写入日志文件?

7

我正在使用 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所建议的那样。但这些消息并没有被打印出来。
我感觉可能是我漏掉了什么关键步骤。

如果Sidekiq正在运行并且正在处理您的作业,则log/sidekiq.log将具有TestJob的“start”和“done”条目。那里是否有任何错误? - cschroed
@cschroed 不是的... - hananamar
如果作业正在运行,您可以将以下代码放在 perform 方法的顶部:raise Rails.logger.inspect。然后在 Sidekiq Dead Job 队列中,您将看到有关日志级别和输出位置的更多信息。 - cschroed
1个回答

3

尝试调用Sidekiq.logger,如下:

    Sidekiq.logger.error "logger.info : #{text}"

将“logger.info”放在错误日志中可能有些奇怪,但我只是从问题中发布的示例中获取。

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