【发布时间】:2012-10-22 19:58:20
【问题描述】:
在我的 Rails 项目中,我注意到有时操作不会在完成后立即写入日志文件 development.log,而是在完成其他一些操作之后(或者可能只是在一段时间后,我不确定。)development.log 文件到底是什么时候写的?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 logging
在我的 Rails 项目中,我注意到有时操作不会在完成后立即写入日志文件 development.log,而是在完成其他一些操作之后(或者可能只是在一段时间后,我不确定。)development.log 文件到底是什么时候写的?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 logging
Rails 的默认日志记录是缓冲的,因此日志消息不会立即写入,而是分批发生。您可以使用以下命令强制记录器刷新缓冲区:
这是老办法,as of 3.2 文件系统在写入日志之前处理缓冲:
ActiveSupport::BufferedLogger#auto_flushing 已弃用。无论设置 像这样的底层文件句柄上的同步级别。或者调整你的 文件系统。 FS 缓存现在控制刷新。
您可以更改您的 config/environments/development.rb 以自动刷新每条日志消息:
config.autoflush_log = true
bootstrap.rb 使用它来强制同步日志(例如 f.sync = true)。这将显着影响性能。
【讨论】:
【讨论】: