Boost.Log - 管理重复的连续日志消息并防止打印重复

Boost.Log -managing repeated consecutive log messages and prevent printing duplicates

我是 Boost.Log 的新手,我用它来开发一个记录器库作为 Boost.Log 之上的包装器。我的问题是找到一种方便的方法来为连续重复的日志消息数设置计数器,而不是多次打印相同的日志。

例如:(ADD_LOG() 方法在我的库中并执行 BOOST_LOG_SEV(...))

ADD_LOG("Hello");
ADD_LOG("Hello");
ADD_LOG("Hello");
ADD_LOG("Some Different Hello");

我想输出这样的日志文件:(sample_0.log)

................................................ ............

[时间戳] [过滤器] 你好

[时间戳] [过滤器] 跳过了 2 条重复的消息!

[时间戳] [过滤器] 一些不同的你好

................................................ ..........

我正在使用 this 示例,其中 Text File BackendTimeStampFilter 都可以。我的问题是关于跳过重复项。也许设置过滤器或其他任何东西。

我认为 linux 中的 syslog 通过某些配置具有此功能。

Boost.Log没有实现这样的日志记录积累,需要自己实现。您可以通过实现一个 sink backend 来做到这一点,它会缓冲最后一条日志记录消息并将其与下一条消息进行比较。请注意,您不应缓冲整个记录或格式化字符串,因为它可能会因时间戳、记录计数器和您可能使用的其他经常更改的属性值而有所不同。