DEV: Move SidekiqLogsterReporter out of initializer (#16687)

This fits more naturally in its own file.
This commit is contained in:
Daniel Waterworth 2022-05-09 13:01:31 -05:00 committed by GitHub
parent 3206452d78
commit bc8968fd12
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 28 deletions

View File

@ -1,6 +1,7 @@
# frozen_string_literal: true
require "sidekiq/pausable"
require 'sidekiq_logster_reporter'
Sidekiq.configure_client do |config|
config.redis = Discourse.sidekiq_redis_config
@ -61,34 +62,6 @@ Sidekiq.logger.define_singleton_method(:add) do |severity, message = nil, progna
Rails.logger.add(severity, message, progname, &blk)
end
class SidekiqLogsterReporter < Sidekiq::ExceptionHandler::Logger
def call(ex, context = {})
return if Jobs::HandledExceptionWrapper === ex
Discourse.reset_active_record_cache_if_needed(ex)
# Pass context to Logster
fake_env = {}
context.each do |key, value|
Logster.add_to_env(fake_env, key, value)
end
text = "Job exception: #{ex}\n"
if ex.backtrace
Logster.add_to_env(fake_env, :backtrace, ex.backtrace)
end
Logster.add_to_env(fake_env, :current_hostname, Discourse.current_hostname)
Thread.current[Logster::Logger::LOGSTER_ENV] = fake_env
Logster.logger.error(text)
rescue => e
Logster.logger.fatal("Failed to log exception #{ex} #{hash}\nReason: #{e.class} #{e}\n#{e.backtrace.join("\n")}")
ensure
Thread.current[Logster::Logger::LOGSTER_ENV] = nil
end
end
Sidekiq.error_handlers.clear
Sidekiq.error_handlers << SidekiqLogsterReporter.new

View File

@ -0,0 +1,29 @@
# frozen_string_literal: true
class SidekiqLogsterReporter < Sidekiq::ExceptionHandler::Logger
def call(ex, context = {})
return if Jobs::HandledExceptionWrapper === ex
Discourse.reset_active_record_cache_if_needed(ex)
# Pass context to Logster
fake_env = {}
context.each do |key, value|
Logster.add_to_env(fake_env, key, value)
end
text = "Job exception: #{ex}\n"
if ex.backtrace
Logster.add_to_env(fake_env, :backtrace, ex.backtrace)
end
Logster.add_to_env(fake_env, :current_hostname, Discourse.current_hostname)
Thread.current[Logster::Logger::LOGSTER_ENV] = fake_env
Logster.logger.error(text)
rescue => e
Logster.logger.fatal("Failed to log exception #{ex} #{hash}\nReason: #{e.class} #{e}\n#{e.backtrace.join("\n")}")
ensure
Thread.current[Logster::Logger::LOGSTER_ENV] = nil
end
end