Ruby on rails 这个RubyonRails代码是线程安全的吗?

Ruby on rails 这个RubyonRails代码是线程安全的吗?,ruby-on-rails,ruby,multithreading,thread-safety,jruby,Ruby On Rails,Ruby,Multithreading,Thread Safety,Jruby,我对JRuby on Rails应用程序中的Logger有问题。一个线程将日志级别更改为error,并且不会更改回error。这段代码是线程安全的,还是应该寻找其他发生这种情况的地方 好的,看起来在第一个线程中的yield期间,其他线程将执行silent操作,它将logger.level设置为ERROR,因此如果其他线程将在第一个线程之后结束,它会将级别永久设置为ERROR。我在Rails logger和JRuby中遇到了同样的线程安全问题。我不知道您是否正在寻找解决方案,但此修复程序对我有效

我对JRuby on Rails应用程序中的
Logger
有问题。一个线程将日志级别更改为error,并且不会更改回error。这段代码是线程安全的,还是应该寻找其他发生这种情况的地方


好的,看起来在第一个线程中的
yield
期间,其他线程将执行
silent
操作,它将
logger.level
设置为
ERROR
,因此如果其他线程将在第一个线程之后结束,它会将级别永久设置为
ERROR

我在Rails logger和JRuby中遇到了同样的线程安全问题。我不知道您是否正在寻找解决方案,但此修复程序对我有效:。

感谢链接,此代码现在已经过时,但基于此,我创建了我的版本。
def silence
  message = "ActiveSupport::Benchmarkable#silence is deprecated. It will be removed from Rails 4.1."
  ActiveSupport::Deprecation.warn message
  old_logger_level, logger.level = logger.level, ::Logger::ERROR if logger
  yield
ensure
  logger.level = old_logger_level if logger
end