Skip to content

Instantly share code, notes, and snippets.

@estum
Created January 21, 2015 11:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save estum/dd67fc80bee60966672c to your computer and use it in GitHub Desktop.
Save estum/dd67fc80bee60966672c to your computer and use it in GitHub Desktop.
Sidekiq + ActiveJob logging hook (fixing job class name in output log)
# lib/sidekiq/active_job_logging_hook.rb
require 'sidekiq/middleware/server/logging'
class Sidekiq::ActiveJobLoggingHook < Sidekiq::Middleware::Server::Logging
def call(worker, item, queue)
klass = item['args'].try(:first).try(:[], 'job_class').presence || worker.class.to_s
Sidekiq::Logging.with_context("#{klass} JID-#{item['job_id'] || item['jid']}") do
begin
start = Time.now
logger.info { "start" }
yield
logger.info { "done: #{elapsed(start)} sec" }
rescue Exception
logger.info { "fail: #{elapsed(start)} sec" }
raise
end
end
end
end
# config/initializers/sidekiq.rb
Sidekiq.configure_server do |config|
# Replace middleware to fix log messages
# - before: 2015-01-21T10:34:46.361Z 29294 TID-ox24orbbo ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper >_<...
# - after: 2015-01-21T10:40:04.724Z 29575 TID-ovqv1a3yk HumanNamedJob ...
config.server_middleware do |chain|
require 'sidekiq/active_job_logging_hook'
chain.insert_after Sidekiq::Middleware::Server::Logging, Sidekiq::ActiveJobLoggingHook
chain.remove Sidekiq::Middleware::Server::Logging
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment