如何在rescue_from块访问ActiveJob Logger?

时间:2016-02-02 15:59:13

标签: ruby-on-rails logging resque rails-activejob

如果我在perform()内登录,我会得到一个漂亮的输出:

  def perform(*args)
    begin
      MyActivity.run(*args)
    rescue StandardError => e
      Rails.logger.debug e
      raise e
    end
  end

13:55:10 resque.1 | [ActiveJob] [MyJob] [18cd0f78-d784-48a7-a573-0b3aa95c51cc] Connection refused - connect(2) for "fe80::1%lo0" port 3000

如果我在rescue_from区域内登录,我将无法获得ActiveJobJobId

的标签/标签
rescue_from(StandardError) do |e|
  Rails.logger.debug e
end

13:55:11 resque.1 | Connection refused - connect(2) for "fe80::1%lo0" port 3000

我认为在rescue_from区块作业已经终止,所以我们不再拥有JobId

有没有办法像perform中的日志一样获取输出?

1 个答案:

答案 0 :(得分:0)

刚刚发现我可以这样做:

  rescue_from(StandardError) do |e|
    Rails.logger.debug "[ActiveJob] [#{self.class}] [#{job_id}] #{e}"
  end

如果我不想为任何工作记录任何类型的错误,我可以在application_job.rb内编写此代码甚至更好。