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

Posted

技术标签:

【中文标题】ActiveJob + Sidekiq 6.0.3:如何写入日志文件?【英文标题】:ActiveJob + Sidekiq 6.0.3: How to write to a log file? 【发布时间】:2020-03-29 06:06:22 【问题描述】:

我正在使用 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 将有 startdone 条目用于 TestJob。那里有什么错误吗? @cschroed nope... 如果作业正在运行,那么您可以将其放在 perform 方法的顶部:raise Rails.logger.inspect。然后在 Sidekiq Dead Job 队列中,您将看到有关日志级别以及将输出发送到何处的更多信息。 【参考方案1】:

尝试拨打Sidekiq.logger,如:

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

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

【讨论】:

以上是关于ActiveJob + Sidekiq 6.0.3:如何写入日志文件?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ActiveJob 禁用自动重试,与 Sidekiq 一起使用

使用 Sidekiq 进行活动作业并获取 ActiveJob::DeserializationError

如何使用 ActiveJob 设置 Sidekiq 的重试次数?

如何将 ApplicationMailer(或 ActionMailer)设置为默认使用 Activejob/sidekiq

Sidekiq Rails 4.2使用活动作业还是工作者?有什么不同

Sidekiq Rails 4.2 使用 Active Job 还是 Worker?有啥不同