首页 > 解决方案 > Boost.Log - 管理重复的连续日志消息并防止打印重复

问题描述

我是 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)

..................................................... ……

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

[TimeStamp] [Filter] 跳过 2 条重复消息!

[TimeStamp] [Filter] 一些不同的你好

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

我将这个例子与Text File Backendand一起使用TimeStamp,没问题Filter。我的问题是关于跳过重复项。也许设置过滤器或其他任何东西。

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

标签: c++loggingboostboost-log

解决方案


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


推荐阅读