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
将有 start
和 done
条目用于 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