加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在进程终止时写入/刷新Rails日志

发布时间:2020-12-17 03:52:34 所属栏目:百科 来源:网络整理
导读:Rails记录器具有auto_flushing方法.它会延迟写入日志,直到条目数与设置的条目数相同.自Rails 2以来,这已经存在,并且旨在通过在负载下停止对磁盘的持续写入来加快速度. 这在大多数情况下都很好,但是我们的短期运行工作从来没有经过足够长的时间来通过冲洗 –
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

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

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

class << Rails.logger
  def flush_error( message )
    Rails.logger.error message
    Rails.logger.flush
  end
end

然后只需使用该方法……

解决方法

如果由于某种原因,rails没有运行at_exit挂钩(飞行猴子潜逃你的理智),你真的想要那些日志条目,就像有些人说的那样,并在重要的日志记录声明之后运行它:

Rails.logger.flush

要么

logger.flush

瞧.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读