Boost日志autoflush不适用于文件

时间:2017-03-22 10:08:12

标签: 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"

我的问题是autoflush对文件不起作用。在stdout上我立即得到每个事件,但是当我退出应用程序时,首先写入文件。这对伐木来说非常尴尬......

首先我使用了1.58,情况是一样的。我做错了什么?

提前谢谢你。 最诚挚的问候:Balazs Bamer

1 个答案:

答案 0 :(得分:0)

Google是我的朋友,我找到了解决方案here。 Boost确实可以在应用程序目录中创建日志文件,并且仅在关闭时将其复制到目标(日志旋转或程序存在)。因此,为了使所有日志文件出现在特定目录中,必须在目标文件名模式中包含目录名称。

this.actions$
    .ofType('ADD_SOURCE')
    .switchMap(
      (action: Action) => 
      (Observable.of({ type: 'ADD_SOURCE_SUCCESS' })));

最好的问候:Balazs