diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-09-24 09:06:04 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-09-24 09:06:04 +0000 |
commit | bc89882970d6a14b1f72eb9c715fae90b26d066c (patch) | |
tree | f5cb59d5130d7585980eb39437071e07ebc12f87 /lib/gitlab/sidekiq_logging | |
parent | 4a45a787703cb78c6101750cfbdc9f656b934b42 (diff) | |
download | gitlab-ce-bc89882970d6a14b1f72eb9c715fae90b26d066c.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/sidekiq_logging')
-rw-r--r-- | lib/gitlab/sidekiq_logging/exception_handler.rb | 27 | ||||
-rw-r--r-- | lib/gitlab/sidekiq_logging/structured_logger.rb | 7 |
2 files changed, 28 insertions, 6 deletions
diff --git a/lib/gitlab/sidekiq_logging/exception_handler.rb b/lib/gitlab/sidekiq_logging/exception_handler.rb new file mode 100644 index 00000000000..fba74b6c9ed --- /dev/null +++ b/lib/gitlab/sidekiq_logging/exception_handler.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +module Gitlab + module SidekiqLogging + class ExceptionHandler + def call(job_exception, context) + data = { + error_class: job_exception.class.name, + error_message: job_exception.message + } + + if context.is_a?(Hash) + data.merge!(context) + # correlation_id, jid, and class are available inside the job + # Hash, so promote these arguments to the root tree so that + # can be searched alongside other Sidekiq log messages. + job_data = data.delete(:job) + data.merge!(job_data) if job_data.present? + end + + data[:error_backtrace] = Gitlab::Profiler.clean_backtrace(job_exception.backtrace) if job_exception.backtrace.present? + + Sidekiq.logger.warn(data) + end + end + end +end diff --git a/lib/gitlab/sidekiq_logging/structured_logger.rb b/lib/gitlab/sidekiq_logging/structured_logger.rb index 48b1524f9c7..0a21e529ceb 100644 --- a/lib/gitlab/sidekiq_logging/structured_logger.rb +++ b/lib/gitlab/sidekiq_logging/structured_logger.rb @@ -58,8 +58,7 @@ module Gitlab payload['message'] = "#{message}: fail: #{payload['duration']} sec" payload['job_status'] = 'fail' payload['error_message'] = job_exception.message - payload['error'] = job_exception.class - payload['error_backtrace'] = backtrace_cleaner.clean(job_exception.backtrace) + payload['error_class'] = job_exception.class.name else payload['message'] = "#{message}: done: #{payload['duration']} sec" payload['job_status'] = 'done' @@ -127,10 +126,6 @@ module Gitlab Gitlab::Metrics::System.monotonic_time end - def backtrace_cleaner - @backtrace_cleaner ||= ActiveSupport::BacktraceCleaner.new - end - def format_time(timestamp) return timestamp if timestamp.is_a?(String) |