我正在使用papertrails插件在heroku上运行sidekiq应用程序,并且我使用例外来失败作业。对于每个异常,完整的堆栈跟踪存储在papertrail日志中,这绝对不是我想要的。
我找不到如何关闭该功能的方法。你能给我一个暗示我能做些什么吗? 也许我应该以不同的方式处理失败的工作?
谢谢!
答案 0 :(得分:1)
这里的modification of the standard error logger将回溯记录限制为应用程序独有的行:
class ExceptionHandlerLogger
def call(ex, ctxHash)
Sidekiq.logger.warn(Sidekiq.dump_json(ctxHash)) if !ctxHash.empty?
Sidekiq.logger.warn "#{ex.class.name}: #{ex.message}"
unless ex.backtrace.nil?
Sidekiq.logger.warn filter_backtrace(ex.backtrace).join("\n")
end
end
def filter_backtrace(backtrace)
index = backtrace.index { |item| item.include?('/lib/sidekiq/processor.rb') }
backtrace.first(index.to_i)
end
end
if !Sidekiq.error_handlers.delete_if { |h| h.class == Sidekiq::ExceptionHandler::Logger }
fail "default sidekiq logger class changed!"
end
Sidekiq.error_handlers << ExceptionHandlerLogger.new