我在我的应用程序中使用Boost.log。 如果多个线程大量记录,则日志记录操作不能锁定,因此我使用此接收器进行日志记录:
boost::log::sinks::ordering_asynchronous_sink
进入这个前端文件:
boost::log::sinks::text_file_backend
日志记录的主要目的是查看严重错误以诊断崩溃。 然而,我注意到记录只是偶尔写入文件一次(当一定数量的记录可能加起来时),这意味着突然崩溃将不会留下任何记录记录来解释它。
我可以在这做什么?我可以强制文件写入致命严重性错误吗?更好的方法?
答案 0 :(得分:2)
听起来您的日志条目没有立即刷新到磁盘。这是提高磁盘性能的典型默认行为(避免过多的小写操作),但它具有您在此处描述的缺点。您可以在日志记录后端设置auto_flush标志,以确保所有日志条目立即写入磁盘。有关详细信息,请参阅docs。