我在JRuby on Rails应用程序中遇到Logger
的问题。一个线程将日志级别更改为错误,并且不会更改回来。这段代码是线程安全的,还是应该寻找其他发生的地方?
https://github.com/rails/rails/blob/master/activesupport/lib/active_support/benchmarkable.rb#L50
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
答案 0 :(得分:3)
好吧,看起来在第一个帖子的yield
期间,其他帖子会silence
将logger.level
设置为ERROR
,所以如果其他帖子将在之后结束第一个,它将永久设置为ERROR
。
答案 1 :(得分:2)
我遇到过与Rails记录器和JRuby相同的线程安全问题。我不知道您是否在寻找解决方法,但此修复程序对我有用:http://log.kares.org/2011/04/railslogger-is-not-threadsafe.html。