Skip to content

Commit bd47a6e

Browse files
authored
Merge pull request rails#46566 from Shopify/logger-silence-per-logger
LoggerThreadSafeLevel only impact the receiving logger
2 parents 3e13388 + 2e90215 commit bd47a6e

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

activesupport/lib/active_support/logger_thread_safe_level.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def #{severity.downcase}? # def debug?
1818
end
1919

2020
def local_level
21-
IsolatedExecutionState[:logger_thread_safe_level]
21+
IsolatedExecutionState[local_level_key]
2222
end
2323

2424
def local_level=(level)
@@ -30,7 +30,11 @@ def local_level=(level)
3030
else
3131
raise ArgumentError, "Invalid log level: #{level.inspect}"
3232
end
33-
IsolatedExecutionState[:logger_thread_safe_level] = level
33+
if level.nil?
34+
IsolatedExecutionState.delete(local_level_key)
35+
else
36+
IsolatedExecutionState[local_level_key] = level
37+
end
3438
end
3539

3640
def level
@@ -44,5 +48,10 @@ def log_at(level)
4448
ensure
4549
self.local_level = old_local_level
4650
end
51+
52+
private
53+
def local_level_key
54+
@local_level_key ||= :"logger_thread_safe_level_#{object_id}"
55+
end
4756
end
4857
end

activesupport/test/logger_test.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,17 @@ def test_temporarily_logging_at_a_symbolic_level
392392
assert_includes @output.string, "THIS IS HERE"
393393
end
394394

395+
def test_log_at_only_impact_receiver
396+
logger2 = Logger.new(StringIO.new)
397+
assert_equal Logger::DEBUG, logger2.level
398+
assert_equal Logger::DEBUG, @logger.level
399+
400+
@logger.log_at :error do
401+
assert_equal Logger::DEBUG, logger2.level
402+
assert_equal Logger::ERROR, @logger.level
403+
end
404+
end
405+
395406
private
396407
def level_name(level)
397408
::Logger::Severity.constants.find do |severity|

0 commit comments

Comments
 (0)