【问题标题】:Rails development log file - time of writingRails 开发日志文件 - 撰写时间
【发布时间】:2012-10-22 19:58:20
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    为 Rails 3.2 更新

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

    这是老办法,as of 3.2 文件系统在写入日志之前处理缓冲:

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

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

    config.autoflush_log = true
    

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

    【讨论】:

    • 嗯,我明白了.. 那么默认的自动刷新周期是多少?在记录器刷新之前必须堆积多少条消息?
    • 从 3.2 开始,这已更改,文件系统控制何时将日志刷新到文件。
    【解决方案2】:

    你为什么不使用 log4r?

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-22
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      相关资源
      最近更新 更多