我使用的是 Windows 7,在控制台应用程序中使用 v1.54 中的 boost::log 。我使用带有旋转的 add_file_log() ,只要我的 main() 函数退出,它就可以正常工作。但是,如果使用 powershell CloseMainWindow() 从外部终止应用程序,则永远不会写入日志文件。
我已经使用 SetConsoleCtrlHandler() 设置了一个 Windows 控制处理程序,并且可以捕获 CTRL_CLOSE_EVENT,但我不知道是否可以调用 boost::log 方法来强制在应用程序退出之前写入日志文件。有人有解决方案吗?
Thanks,
Rob
您可能想看看两件事。以下是根据我的经验
1) 日志文件存在但为空。在这种情况下,在创建日志消息时使用 auto_flush 将日志刷新到磁盘。否则,如果发生 CTRL_CLOSE_EVENT 时没有足够的日志消息可刷新,您最终可能会得到一个空日志。
2) 日志文件存在,但并不是您想象的那样。在这种情况下,请确保在与目标目录相同的目录中创建日志文件。目标目录在接收器关闭时收集日志文件。如果关键字 file_name 设置为文件名,则只会在工作目录中创建该文件,而不是在目标目录中。如果应用程序退出时未关闭接收器,则文件将不会移动到目标目录。
HTH,
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)