将 Boost.Log 与 Boost.Asio 服务一起使用
Posted
技术标签:
【中文标题】将 Boost.Log 与 Boost.Asio 服务一起使用【英文标题】:Using Boost.Log together with Boost.Asio services 【发布时间】:2015-12-28 08:29:34 【问题描述】:我有一个使用 boost.asio 服务的服务器。我使用 boost.log 通过异步接收器进行日志记录。 asio_io_service 在自己的线程中启动。记录器在启动服务器之前在主线程中初始化。服务器通过 async_accept 接受连接并异步读取和发送消息。
现在我遇到了问题,记录器仅在服务器执行某些操作时记录消息,例如接收消息。当我在记录器初始化之后和启动服务器之前记录一条消息时,我只能在服务器接收到第一条消息之后才能看到这条日志消息。但即使没有发生服务器操作,我也想记录消息。您知道问题是什么以及如何解决吗?
【问题讨论】:
【参考方案1】:好的,相关的 ***-questions 给了我答案 :) 这是默认禁用的 auto_flush。所以记录器初始化中的这一行就是解决方案:
sink->locked_backend()->auto_flush(true);
【讨论】:
其实如果你使用的是Boost.log异步sinks,auto_flush(true)是没有效果的。以上是关于将 Boost.Log 与 Boost.Asio 服务一起使用的主要内容,如果未能解决你的问题,请参考以下文章
boost::asio 与 boost::unique_future
将 fork() 与 boost::asio::ip::tcp::iostream 一起使用是不是安全?