【问题标题】:Boost.Log - logging an application's critical errorsBoost.Log - 记录应用程序的严重错误
【发布时间】:2011-11-13 17:12:59
【问题描述】:

我在我的应用程序中使用 Boost.log。 有多个线程大量记录,记录操作不能被锁定,所以我使用这个接收器记录:

    boost::log::sinks::ordering_asynchronous_sink

进入这个前端文件:

    boost::log::sinks::text_file_backend

记录的主要目的是查看严重错误以诊断崩溃。 然而我注意到记录只是偶尔写入文件(当一定数量的记录可能已经加起来时),这意味着突然的崩溃不会留下任何日志记录来解释它。

我可以在这里做什么?我可以强制文件写入致命严重性错误吗?更好的方法?

【问题讨论】:

    标签: c++ boost logging


    【解决方案1】:

    听起来您的日志条目没有立即刷新到磁盘。这是提高磁盘性能的典型默认行为(避免过多的小写入),但它具有您在此处描述的缺点。您可以在日志记录后端设置一个 auto_flush 标志,以确保所有日志条目都立即写入磁盘。有关详细信息,请参阅docs

    【讨论】:

    • 是否可以控制何时应用 auto_flush?我只想将错误记录冲入文件中。
    • @Leo:不确定。我能想到的唯一方法是,如果您使用多个日志记录后端,每种类型的日志一个。
    • @Leo。同样,我不确定,因为我只玩过一点 boost log。最好的办法是尝试发布一个单独的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多