将Boost.Log与Boost.Asio服务一起使用

Using Boost.Log together with Boost.Asio services

本文关键字:Boost 一起 服务 Asio Log      更新时间:2023-10-16

我有一台使用boost.asio服务的服务器。我使用boost.log与异步接收器进行日志记录。asio_io_service在自己的线程中启动。在启动服务器之前,会在主线程中初始化记录器。服务器通过async_accept接受连接,并以异步方式读取和发送消息。

现在我遇到了一个问题,即当服务器正在做一些事情时,记录器只记录消息,例如接收消息。当我在记录器初始化后和启动服务器之前记录消息时,我只能在服务器收到第一条消息后才能看到此日志消息。但是,即使没有服务器操作,我也希望记录消息。你知道问题是什么吗?我该怎么解决?

好的,相关的stackoverflow问题给了我答案:)它是默认禁用的auto_flush。因此,记录器初始化中的这一行就是解决方案:

sink->locked_backend()->auto_flush(true);