2

在我的 Rails 项目中,我注意到有时操作不会在完成后立即写入日志文件development.log,而是在完成其他一些操作之后(或者可能只是在一段时间后,我不确定。)development.log文件写了吗?

4

2 回答 2

4

针对 Rails 3.2 更新

Rails 的默认日志记录是缓冲的,因此日志消息不会立即写入,而是分批发生。您可以强制记录器使用以下命令刷新缓冲区:

这是旧的方式,从 3.2开始,文件系统在写入日志之前处理缓冲:

ActiveSupport::BufferedLogger#auto_flushing 已弃用。像这样在底层文件句柄上设置同步级别。或者调整你的文件系统。FS 缓存现在控制刷新。

您可以将config/environments/development.rb更改为自动刷新每条日志消息:

config.autoflush_log = true

bootstrap.rb使用它来强制同步日志(例如 f.sync = true)。这将显着影响性能。

于 2012-10-22T20:06:31.160 回答
2

你为什么不使用log4r?

  1. 它非常快
  2. 它支持时间戳
  3. 您可以根据需要自定义输出格式。

使用方法请参考:https ://stackoverflow.com/a/5959013/445908

于 2012-10-22T21:40:18.487 回答