我在我的应用程序中使用boost log进行日志记录。
但是,在我的代码的某些部分中,我有一些日志语句,如果出现问题可能会经常发生。我想要一种可以限制日志消息的保护,当它检测到同一条消息不断出现时。
e.g。 (这是一个简化的例子,而不是实际的实现)
while(!framebuffer.try_pop(frame))
{
BOOST_LOG(trace) << "Buffer underrun.";
}
如果由于某种原因“framebuffer”长时间没有收到任何帧,则日志记录将发送给很多日志消息。
但是,我不确定使用什么策略限制日志消息,不丢失任何重要消息,以及如何实现它。
答案 0 :(得分:1)
如果您想要简单的话,可以封装它:
int tooMany = 10;
int count = 0;
while(!framebuffer.try_pop(frame))
{
if(count < tooMany) {
BOOST_LOG(trace) << "Buffer underrun.";
}
count++;
}
if(count >= tooMany) {
BOOST_LOG(trace) << "Message repeated: " << count << " times.";
}
如果你得到一个绝对的桶加载量,请注意'count'变量上的整数溢出。