将JobId添加到Resque日志

时间:2014-08-22 12:57:25

标签: ruby-on-rails logging resque

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

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

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

这是伪代码,它显然不起作用。

我发现的最接近的是this宝石,它仍然没有做我想要的。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

唯一的问题是你需要更改所有对Resque.enqueue的调用,例如:

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

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