c++ - 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 Backend
and一起使用TimeStamp
,没问题Filter
。我的问题是关于跳过重复项。也许设置过滤器或其他任何东西。
我认为syslog
在 linux 中通过一些配置具有此功能。
解决方案
Boost.Log 没有实现这样的日志记录累积,你需要自己实现。您可以通过实现一个接收器后端来缓冲最后一条日志记录消息并将其与下一条消息进行比较来做到这一点。请注意,您不应缓冲整个记录或格式化字符串,因为它可能会因时间戳、记录计数器和您可能使用的其他频繁更改的属性值而有所不同。
推荐阅读
- hyperledger-fabric - 如何通过链码将文档批量插入到couchdb
- reactjs - 我们在 mapStateToProps 中使用 state 和 reducer 有什么不同。什么是正确的方法?
- dart - 卡片宽度与父级匹配:颤动
- c - 通过指向函数的指针传递值。我们要在函数内部创建变量的副本吗?
- sql - Oracle 相关子查询
- c# - .Include 在 LINQ 中的性能
- perl - 在perl中用多个空格替换单个空格
- python - xpath没有获取所有链接
- python - 从具有相同 ID 的行创建列
- javascript - 如何在nodejs中接收上传的文件