diff --git a/Changelog.md b/Changelog.md index 0f8d3c4f34ee5c205bf5d8fe48ad29491f70faa6..5ca5ab15baf9d4ff607ea887e85f63a5bbdd2c98 100644 --- a/Changelog.md +++ b/Changelog.md @@ -15,6 +15,7 @@ * Refactored the Logger to add basic logrotating and more useful timestamps [#5975](https://github.com/diaspora/diaspora/pull/5975) * Gracefully handle mailer failures if a like is already deleted again [#5983](https://github.com/diaspora/diaspora/pull/5983) * Ensure posts have an author [#5986](https://github.com/diaspora/diaspora/pull/5986) +* Improve the logging messages of Sidekiq messages [#5988](https://github.com/diaspora/diaspora/pull/5988) ## Bug fixes * Disable auto follow back on aspect deletion [#5846](https://github.com/diaspora/diaspora/pull/5846) diff --git a/app/workers/base.rb b/app/workers/base.rb index 7a603b8ae36611f4f12008f3a1506c2917a28be1..e33135007ffa144062d1ade50a44e9d9e2fe24d4 100644 --- a/app/workers/base.rb +++ b/app/workers/base.rb @@ -8,10 +8,6 @@ module Workers sidekiq_options backtrace: (bt = AppConfig.environment.sidekiq.backtrace.get) && bt.to_i, retry: (rt = AppConfig.environment.sidekiq.retry.get) && rt.to_i - def logger - @logger ||= ::Logging::Logger[self] - end - # In the long term we need to eliminate the cause of these def suppress_annoying_errors(&block) yield @@ -40,5 +36,11 @@ module Workers "duplicate key in table 'posts'" ).any? {|index| e.message.include? index } end + + private + + def logger + @logger ||= ::Logging::Logger[self] + end end end diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb index dbcba8bbb71e31a7ed6837105caad7d393601995..9709cc27a8c98d7a783cb5981cbe3e98599d0a87 100644 --- a/config/initializers/sidekiq.rb +++ b/config/initializers/sidekiq.rb @@ -28,7 +28,25 @@ Sidekiq.configure_server do |config| # Make sure each Sidekiq process has its own sequence of UUIDs UUID.generator.next_sequence - Sidekiq.logger = Logging.logger[Sidekiq] + # wrap the logger to add the sidekiq job context to the log + class SidekiqLogger < SimpleDelegator + SPACE = " " + + # only info is used with context + def info(data=nil) + return false if Logger::Severity::INFO < level + data = yield if data.nil? && block_given? + __getobj__.info("#{context}#{data}") + end + + # from sidekiq/logging.rb + def context + c = Thread.current[:sidekiq_context] + "#{c.join(SPACE)}: " if c && c.any? + end + end + + Sidekiq::Logging.logger = SidekiqLogger.new(Logging.logger[Sidekiq]) end Sidekiq.configure_client do |config| diff --git a/config/logging.rb b/config/logging.rb index b58db314e72289d11277a72d034bacde40d191d7..ae5d536fd2eb2ac5c539841bff0d7f7aeafdfcac 100644 --- a/config/logging.rb +++ b/config/logging.rb @@ -6,7 +6,8 @@ Logging::Rails.configure do |config| Logging.format_as :inspect # The default layout used by the appenders. - layout = Logging.layouts.pattern(pattern: "[%d] %-5l %c : %m\n") + pattern = "[%d] %-5l PID-%p TID-%t %c: %m\n" + layout = Logging.layouts.pattern(pattern: pattern) # Setup a color scheme called 'bright' than can be used to add color codes # to the pattern layout. Color schemes should only be used with appenders @@ -30,7 +31,7 @@ Logging::Rails.configure do |config| Logging.appenders.stdout("stdout", auto_flushing: true, layout: Logging.layouts.pattern( - pattern: "[%d] %-5l %c : %m\n", + pattern: pattern, color_scheme: "bright" ) ) if config.log_to.include? "stdout"