Skip to content

Commit 3a60945

Browse files
committed
Create sidekiq_v4.rb
1 parent 93fed9e commit 3a60945

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Sidekiq v4 patches
2+
#
3+
# To re-enable stdout logging for sidekiq server processes, add the following snippet to config/initializers/sidekiq.rb:
4+
# Sidekiq.configure_server do |config|
5+
# SemanticLogger.add_appender(io: $stdout, level: :debug, formatter: :color)
6+
# end
7+
require "sidekiq/logging"
8+
# Replace Sidekiq context with Semantic Logger
9+
module Sidekiq
10+
module Logging
11+
def self.with_context(msg, &block)
12+
SemanticLogger.tagged(msg, &block)
13+
end
14+
end
15+
end
16+
17+
require "sidekiq/processor"
18+
# Convert string to machine readable format
19+
module Sidekiq
20+
class Processor
21+
def log_context(item)
22+
event = { jid: item["jid".freeze] }
23+
event[:bid] = item["bid".freeze] if item["bid".freeze]
24+
event
25+
end
26+
end
27+
end
28+
29+
require "sidekiq/middleware/server/logging"
30+
# Let Semantic Logger handle duration logging
31+
module Sidekiq
32+
module Middleware
33+
module Server
34+
class Logging
35+
def call(worker, item, queue)
36+
worker.logger.info("Start #perform")
37+
worker.logger.measure_info(
38+
"Completed #perform",
39+
on_exception_level: :error,
40+
log_exception: :full,
41+
metric: "Sidekiq/#{worker.class.name}/perform"
42+
) do
43+
yield
44+
end
45+
end
46+
end
47+
end
48+
end
49+
end
50+
51+
require "sidekiq/worker"
52+
# Logging within each worker should use its own logger
53+
module Sidekiq
54+
module Worker
55+
attr_accessor :jid
56+
57+
def self.included(base)
58+
raise ArgumentError, "You cannot include Sidekiq::Worker in an ActiveJob: #{base.name}" if base.ancestors.any? { |c| c.name == "ActiveJob::Base" }
59+
60+
base.extend(ClassMethods)
61+
base.include(SemanticLogger::Loggable)
62+
base.class_attribute :sidekiq_options_hash
63+
base.class_attribute :sidekiq_retry_in_block
64+
base.class_attribute :sidekiq_retries_exhausted_block
65+
end
66+
end
67+
end
68+
69+
require "sidekiq/exception_handler"
70+
# Exception is already logged by Semantic Logger during the perform call
71+
module Sidekiq
72+
module ExceptionHandler
73+
class Logger
74+
def call(ex, ctxHash)
75+
Sidekiq.logger.warn(ctxHash) if !ctxHash.empty?
76+
end
77+
end
78+
end
79+
end
80+

0 commit comments

Comments
 (0)