小编Gho*_*oti的帖子

当进程终止时如何写入/刷新 Rails 日志

Rails 记录器有 auto_flushing 方法。它会延迟写入日志,直到条目数与所设置的值相同。这自 Rails 2 以来就已经存在,旨在通过停止在负载下不断写入磁盘来加快速度。

这在大多数情况下都很好,但是我们有短期运行的作业,它们永远不会停留足够长的时间来通过刷新 - 任何错误都会消失。

有没有办法保证进程死掉时日志被刷新?

编辑

最后我这样做了(但是非常冗长)

af = Rails.logger.auto_flushing
Rails.logger.auto_flushing = true
Rails.logger.error "my message"
Rails.logger.auto_flushing = af
Run Code Online (Sandbox Code Playgroud)

这会强制消息输出,但之后会自动刷新

对于真正完整的解决方案,请将其放入初始化程序中:

class << Rails.logger
  def flush_error( message )
    Rails.logger.error message
    Rails.logger.flush
  end
end
Run Code Online (Sandbox Code Playgroud)

然后只需使用该方法...

ruby-on-rails

4
推荐指数
1
解决办法
7799
查看次数

标签 统计

ruby-on-rails ×1