我使用 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"
我的问题是自动刷新不适用于文件。在标准输出上,我会立即获取每个事件,但当我退出应用程序时,会首先写入文件。这对于记录来说是相当尴尬的...
首先我用的是1.58,情况是一样的。我做错了什么?
提前谢谢您。 最好的问候:巴拉兹·巴默
最佳答案
Google 是我的 friend ,我找到了解决方案 here 。 Boost 的实际操作是在应用程序目录中创建日志文件,并且仅在关闭时(日志轮换或程序存在)将其复制到目的地。因此,为了让所有日志文件出现在特定目录中,必须在文件名模式以及目标中包含目录名称。
[Sinks.SYSLF]
...
Target="logs"
FileName="logs/dsmip_%N.log"
最诚挚的问候:巴拉兹
关于c++ - Boost 日志自动刷新不适用于文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42948431/