【问题标题】:Adding JobId to Resque logs将 JobId 添加到 Resque 日志
【发布时间】:2014-08-22 12:57:24
【问题描述】:

正如问题标题所暗示的,我正在尝试将 resque 作业的 id 添加到日志中。在我的常规 Rails 日志记录中,我设置了标记日志记录,因此每个日志条目都有请求的上下文。我不确定如何为 resque 作业执行此操作 - 作业 ID 在日志上下文中是否可用?

基本上我想做这样的事情:

Resque.logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
Resque.log_tags = [
  proc do |job|
    job["id"]
  end
]

这是伪代码,显然不行。

我找到的最接近的东西是this gem,它仍然不能满足我的要求。

【问题讨论】:

    标签: ruby-on-rails logging resque


    【解决方案1】:

    查看resque源代码,我发现目前没有办法做到这一点。但是,您可以使用金钱修补来实现您的愿望目标。你可以做类似的事情

    module Resque::Logging
      def self.log(severity, message)
       log_message = "[#{::Process.pid}]  #{message}" 
       Resque.logger.__send__(severity, log_message) if Resque.logger
      end
    end
    

    【讨论】:

    • 我认为您没有完全阅读这个问题。 Process.pid != job.id
    • 不是Process.pid 在所有工作进程中都是唯一的吗? resque 中没有像 job id 这样的东西。 resque 的一个扩展确实提供了作业 ID,但它只是生成随机唯一 ID github.com/quirkey/resque-status/blob/master/lib/resque/plugins/…。仅供参考,在 sidekiq 中,日志标记为 process id
    【解决方案2】:

    您可以使用 gem 'resque-status' 为每个作业生成一个 job_id。

    唯一的问题是您需要将所有对 Resque.enqueue 的调用更改为:

    job_id = ExampleJob.create(:parameter => 'something')

    Resque-状态 --> https://github.com/quirkey/resque-status

    【讨论】:

      猜你喜欢
      • 2017-02-28
      • 2021-09-25
      • 2021-08-08
      • 1970-01-01
      • 2020-01-17
      • 1970-01-01
      • 2011-09-24
      • 1970-01-01
      • 2017-08-03
      相关资源
      最近更新 更多