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

标签 c++ logging boost

我使用 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/

相关文章:

c++ - 如何在不使用任何 SSE 指令的情况下设置 __m128i?

java mybatis isTraceEnabled()Z错误

haskell - 如何将 log-warper 与 Servant 一起使用?

c++ - 使用 boost 分离随机数生成器类的接口(interface)和实现

c++ - boost 正则表达式模式语法困惑

c++ - 这在 Opencv 文档中意味着什么?

c++ - 解构对象给出 QCoreApplication::sendEvent:“无法将事件发送到不同线程拥有的对象

C++:类成员函数作为事件回调

objective-c - 使用自定义基数创建日志函数

c++ - BGL : how can I get from a bundled object to a vertex descriptor?