gpt4 book ai didi

c++ - Boost 日志自动刷新不适用于文件

转载 作者:行者123 更新时间:2023-11-30 05:15:44 26 4
gpt4 key购买 nike

我使用 boost 1.63 进行日志记录,使用以下代码行使用 Boost 配置文件进行日志记录:

Logger::initFromConfig(logConfigName);

我决定这样做是因为我希望它是可配置的,这样我就可以免于理解 Boost 日志设置 API。配置文件内容为:

[Core]
DisableLogging="false"

[Sinks.SYSLF]
Destination="TextFile"
Asynchronous="true"
AutoFlush="true"
Format="[%TimeStamp(format=\"%Y-%m-%d %H:%M:%S.%f\")%][%Severity%] %Message%"
Target="logs"
FileName="dsmip_%N.log"
RotationTimePoint="00:00:00"
ScanForFiles="Matching"
MaxSize="10000000"
Filter="%Severity% >= info"

[Sinks.Console]
Destination="Console"
AutoFlush="true"
Format="[%TimeStamp(format=\"%Y-%m-%d %H:%M:%S.%f\")%][%Severity%] %Message%"
Filter="%Severity% >= debug"

我的问题是自动刷新对文件不起作用。在 stdout 上,我立即得到每个事件,但文件是在我退出应用程序时首先写入的。这对于日志记录来说是相当尴尬的......

一开始我用的是1.58,情况一样。我做错了什么?

提前致谢。最好的问候:Balazs Bamer

最佳答案

Google 是我的 friend ,我找到了解决方案 here . Boost 的实际操作是在应用程序目录中创建日志文件,并且仅在关闭时(日志循环或程序存在)才将其复制到目的地。因此,为了让所有日志文件都出现在特定目录中,必须在文件名模式以及目标中包含目录名。

[Sinks.SYSLF]
...
Target="logs"
FileName="logs/dsmip_%N.log"

最好的问候:巴拉兹

关于c++ - Boost 日志自动刷新不适用于文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42948431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com