Skip to content

Commit a8a54a1

Browse files
authored
Merge pull request rails#42764 from jhawthorn/logger_thread_safe_fiber_local
Avoid using class var in LoggerThreadSafeLevel
2 parents b01054d + 2379bc5 commit a8a54a1

File tree

1 file changed

+4
-12
lines changed

1 file changed

+4
-12
lines changed

activesupport/lib/active_support/logger_thread_safe_level.rb

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@ module ActiveSupport
99
module LoggerThreadSafeLevel # :nodoc:
1010
extend ActiveSupport::Concern
1111

12-
included do
13-
cattr_accessor :local_levels, default: Concurrent::Map.new(initial_capacity: 2), instance_accessor: false
14-
end
15-
1612
Logger::Severity.constants.each do |severity|
1713
class_eval(<<-EOT, __FILE__, __LINE__ + 1)
1814
def #{severity.downcase}? # def debug?
@@ -21,25 +17,21 @@ def #{severity.downcase}? # def debug?
2117
EOT
2218
end
2319

24-
def local_log_id
25-
Fiber.current.__id__
26-
end
27-
2820
def local_level
29-
self.class.local_levels[local_log_id]
21+
# Note: Thread#[] is fiber-local
22+
Thread.current[:logger_thread_safe_level]
3023
end
3124

3225
def local_level=(level)
3326
case level
3427
when Integer
35-
self.class.local_levels[local_log_id] = level
3628
when Symbol
37-
self.class.local_levels[local_log_id] = Logger::Severity.const_get(level.to_s.upcase)
29+
level = Logger::Severity.const_get(level.to_s.upcase)
3830
when nil
39-
self.class.local_levels.delete(local_log_id)
4031
else
4132
raise ArgumentError, "Invalid log level: #{level.inspect}"
4233
end
34+
Thread.current[:logger_thread_safe_level] = level
4335
end
4436

4537
def level

0 commit comments

Comments
 (0)