diff --git a/README.md b/README.md index 95143090..0d90770e 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Want to show me some ❤️ for the hard work I do on this gem? You can use the - [raise](#raise) - [reject](#reject) - [replace](#replace) - - [Reschedule](#reschedule) + - [reschedule](#reschedule) - [Custom Strategies](#custom-strategies) - [3 Cleanup Dead Locks](#3-cleanup-dead-locks) - [Debugging](#debugging) @@ -610,6 +610,7 @@ This has been probably the most confusing part of this gem. People get really co ```ruby SidekiqUniqueJobs.configure do |config| config.enabled = !Rails.env.test? + config.logger_enabled = !Rails.env.test? end ``` @@ -736,6 +737,7 @@ Configure SidekiqUniqueJobs in an initializer or the sidekiq initializer on appl ```ruby SidekiqUniqueJobs.configure do |config| config.logger = Sidekiq.logger # default, change at your own discretion + config.logger_enabled = true # default, disable for test environments config.debug_lua = false # Turn on when debugging config.lock_info = false # Turn on when debugging config.lock_ttl = 600 # Expire locks after 10 minutes diff --git a/lib/sidekiq_unique_jobs/config.rb b/lib/sidekiq_unique_jobs/config.rb index 3c9d2fda..bc625eae 100644 --- a/lib/sidekiq_unique_jobs/config.rb +++ b/lib/sidekiq_unique_jobs/config.rb @@ -8,6 +8,7 @@ module SidekiqUniqueJobs :enabled, :lock_prefix, :logger, + :logger_enabled, :locks, :strategies, :debug_lua, @@ -91,6 +92,9 @@ class Config < ThreadSafeConfig # @return [nil] LOCK_TTL = nil # + # @return [true,false] by default false (don't disable logger) + LOGGER_ENABLED = true + # # @return [true] by default the gem is enabled ENABLED = true # @@ -180,6 +184,7 @@ def self.default # rubocop:disable Metrics/MethodLength ENABLED, PREFIX, Sidekiq.logger, + LOGGER_ENABLED, LOCKS, STRATEGIES, DEBUG_LUA, diff --git a/lib/sidekiq_unique_jobs/logging.rb b/lib/sidekiq_unique_jobs/logging.rb index 0e683482..5dca48c1 100644 --- a/lib/sidekiq_unique_jobs/logging.rb +++ b/lib/sidekiq_unique_jobs/logging.rb @@ -30,6 +30,8 @@ def logger # @yield [String, Exception] the message or exception to use for log message # def log_debug(message_or_exception = nil, item = nil, &block) + return unless logging? + message = build_message(message_or_exception, item) logger.debug(message, &block) nil @@ -45,6 +47,8 @@ def log_debug(message_or_exception = nil, item = nil, &block) # @yield [String, Exception] the message or exception to use for log message # def log_info(message_or_exception = nil, item = nil, &block) + return unless logging? + message = build_message(message_or_exception, item) logger.info(message, &block) nil @@ -60,6 +64,8 @@ def log_info(message_or_exception = nil, item = nil, &block) # @yield [String, Exception] the message or exception to use for log message # def log_warn(message_or_exception = nil, item = nil, &block) + return unless logging? + message = build_message(message_or_exception, item) logger.warn(message, &block) nil @@ -75,6 +81,8 @@ def log_warn(message_or_exception = nil, item = nil, &block) # @yield [String, Exception] the message or exception to use for log message # def log_error(message_or_exception = nil, item = nil, &block) + return unless logging? + message = build_message(message_or_exception, item) logger.error(message, &block) nil @@ -90,6 +98,8 @@ def log_error(message_or_exception = nil, item = nil, &block) # @yield [String, Exception] the message or exception to use for log message # def log_fatal(message_or_exception = nil, item = nil, &block) + return unless logging? + message = build_message(message_or_exception, item) logger.fatal(message, &block) @@ -218,5 +228,9 @@ def fake_logger_context(_context) yield end + + def logging? + SidekiqUniqueJobs.logging? + end end end diff --git a/lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb b/lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb index 0ff738ae..68af5c10 100644 --- a/lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb +++ b/lib/sidekiq_unique_jobs/sidekiq_unique_jobs.rb @@ -71,6 +71,16 @@ def logger=(other) config.logger = other end + # + # Check if logging is enabled + # + # + # @return [true, false] + # + def logging? + config.logger_enabled + end + # # Temporarily use another configuration and reset to the old config after yielding # diff --git a/spec/sidekiq_unique_jobs/logging_spec.rb b/spec/sidekiq_unique_jobs/logging_spec.rb index 8f78525c..6451db47 100644 --- a/spec/sidekiq_unique_jobs/logging_spec.rb +++ b/spec/sidekiq_unique_jobs/logging_spec.rb @@ -33,6 +33,15 @@ .and(ending_with("(queue=#{queue} class=#{worker} jid=#{jid} lock_digest=#{digest})")), ) end + + context "when logging is disabled" do + it "logs nothing" do + SidekiqUniqueJobs.use_config(logger_enabled: false) do + log_debug(message, item) + expect(logger).not_to have_received(level) + end + end + end end describe "#log_info" do @@ -45,6 +54,15 @@ .and(ending_with("(queue=#{queue} class=#{worker} jid=#{jid} lock_digest=#{digest})")), ) end + + context "when logging is disabled" do + it "logs nothing" do + SidekiqUniqueJobs.use_config(logger_enabled: false) do + log_info(message, item) + expect(logger).not_to have_received(level) + end + end + end end describe "#log_warn" do @@ -57,6 +75,15 @@ .and(ending_with("(queue=#{queue} class=#{worker} jid=#{jid} lock_digest=#{digest})")), ) end + + context "when logging is disabled" do + it "logs nothing" do + SidekiqUniqueJobs.use_config(logger_enabled: false) do + log_warn(message, item) + expect(logger).not_to have_received(level) + end + end + end end describe "#log_error" do @@ -69,6 +96,15 @@ .and(ending_with("(queue=#{queue} class=#{worker} jid=#{jid} lock_digest=#{digest})")), ) end + + context "when logging is disabled" do + it "logs nothing" do + SidekiqUniqueJobs.use_config(logger_enabled: false) do + log_error(message, item) + expect(logger).not_to have_received(level) + end + end + end end describe "#log_fatal" do @@ -81,6 +117,15 @@ .and(ending_with("(queue=#{queue} class=#{worker} jid=#{jid} lock_digest=#{digest})")), ) end + + context "when logging is disabled" do + it "logs nothing" do + SidekiqUniqueJobs.use_config(logger_enabled: false) do + log_fatal(message, item) + expect(logger).not_to have_received(level) + end + end + end end describe "#logging_context" do