在我的Rails项目中,我注意到有时候动作在完成之后不会立即写入日志文件development.log
,而是在完成其他一些操作之后(或者可能只是在一段时间之后,我和#39;我不确定。)究竟什么时候写development.log
文件?
答案 0 :(得分:4)
Rails的默认日志记录是缓冲的,因此日志消息不会立即写入,而是批量发生。您可以强制记录器使用以下内容刷新缓冲区:
这是旧的方式,as of 3.2文件系统在写日志之前处理缓冲:
不推荐使用ActiveSupport :: BufferedLogger#auto_flushing。要么设定 像这样的底层文件句柄上的同步级别。或调整你的 文件系统。现在,FS缓存控制刷新。
您可以将 config / environments / development.rb 更改为自动刷新每条日志消息:
config.autoflush_log = true
bootstrap.rb使用它来强制同步日志(例如 f.sync = true
)。这将显着影响性能。
答案 1 :(得分:2)
为什么不使用log4r?