Rails自定义记录器写入偶尔记录

时间:2013-12-20 15:49:30

标签: ruby-on-rails ruby-on-rails-3 logging buffer activesupport

我在初始化程序中设置了自定义记录器:

# /config/initializers/logging.rb

log_file = File.open("#{Example::Application.config.root}/log/app.log", "a")
AppLogger = ActiveSupport::BufferedLogger.new(log_file)
AppLogger.level = Logger::DEBUG
AppLogger.auto_flushing = true
AppLogger.debug "App Logger Up"

虽然它在我启动应用程序时创建了日志文件,但它不会写入日志文件。来自初始化程序中的AppLogger.debug "App Logger Up"或正在运行的应用程序中其他位置的类似代码。

然而,间歇性地我在文件中找到了日志语句,虽然看似没有任何模式。似乎它正在缓冲日志消息并在它感觉到时倾倒它们。但是我将auto_flushing设置为true,这会导致它立即刷新缓冲区。

发生了什么以及如何让它发挥作用?

注意:使用$ tail -f "log/app.log"拖拽日志也不会收到更改。

我正在使用POW,但我也尝试使用WEBrick并获得相同(缺乏)结果。

1 个答案:

答案 0 :(得分:1)

在对this问题的接受答案的评论中找到答案:

我补充说:

log_file.sync = true

它现在有效。