diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2016-02-24 10:25:03 -0300 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2016-02-24 10:25:03 -0300 |
commit | e56e2459cb5ec8d4752e051ead76e8ffb98f8b4b (patch) | |
tree | e45a947693ebef0194a6fb728dbd59a59ebc1fe9 /activesupport/lib/active_support/logger_thread_safe_level.rb | |
parent | 34ad8240f29c51285b2de3346ca555498c4dbb7f (diff) | |
parent | 2518bda97cbbcb33dc9a92e70d5b01c09e64d12d (diff) | |
download | rails-e56e2459cb5ec8d4752e051ead76e8ffb98f8b4b.tar.gz rails-e56e2459cb5ec8d4752e051ead76e8ffb98f8b4b.tar.bz2 rails-e56e2459cb5ec8d4752e051ead76e8ffb98f8b4b.zip |
Merge pull request #23616 from piotrj/issue_23609_logger_broadcast_silencing
Fix logger silencing for broadcasted loggers
Diffstat (limited to 'activesupport/lib/active_support/logger_thread_safe_level.rb')
-rw-r--r-- | activesupport/lib/active_support/logger_thread_safe_level.rb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/logger_thread_safe_level.rb b/activesupport/lib/active_support/logger_thread_safe_level.rb new file mode 100644 index 0000000000..0aad93e7f2 --- /dev/null +++ b/activesupport/lib/active_support/logger_thread_safe_level.rb @@ -0,0 +1,31 @@ +require 'active_support/concern' + +module ActiveSupport + module LoggerThreadSafeLevel + extend ActiveSupport::Concern + + def after_initialize + @local_levels = Concurrent::Map.new(:initial_capacity => 2) + end + + def local_log_id + Thread.current.__id__ + end + + def local_level + @local_levels[local_log_id] + end + + def local_level=(level) + if level + @local_levels[local_log_id] = level + else + @local_levels.delete(local_log_id) + end + end + + def level + local_level || super + end + end +end |