diff --git a/lib/logger.rb b/lib/logger.rb index be00457..d9d1dcd 100644 --- a/lib/logger.rb +++ b/lib/logger.rb @@ -379,6 +379,14 @@ class Logger include Severity + # Must respond to .new and return a Hash-like object. + # The returned object must respond to #[], #[]=, #delete. + # + # ObjectSpace::WeakKeyMap when supported. + OverrideMap = + defined?(ObjectSpace::WeakKeyMap) ? ObjectSpace::WeakKeyMap : Hash + private_constant :OverrideMap + # Logging severity threshold (e.g. Logger::INFO). def level level_override[level_key] || @level @@ -606,7 +614,7 @@ def initialize(logdev, shift_age = 0, shift_size = 1048576, level: DEBUG, self.datetime_format = datetime_format self.formatter = formatter @logdev = nil - @level_override = {} + @level_override = OverrideMap.new return unless logdev case logdev when File::NULL @@ -789,7 +797,7 @@ def level_override does not call super probably ;;; end - @level_override ||= {} + @level_override ||= OverrideMap.new end def level_key