C++ 什么是好的;退避”;限制错误日志记录的算法?
我想出了一个只在每10,20,30。。。100,200,300…,1000,2000,但我想看看是否有更好的方法来做到这一点C++ 什么是好的;退避”;限制错误日志记录的算法?,c++,C++,我想出了一个只在每10,20,30。。。100,200,300…,1000,2000,但我想看看是否有更好的方法来做到这一点 unsigned long fails = 0; while (true) { if (!checkSomething()) { fails++; unsigned long backoff = exp10(((unsigned long) log10(fails))); if (fails % backoff =
unsigned long fails = 0;
while (true) {
if (!checkSomething()) {
fails++;
unsigned long backoff = exp10(((unsigned long) log10(fails)));
if (fails % backoff == 0)
logError("...");
}
}
看起来很合理。另一种方法是将日志排入内存中的某个位置,并在计时器上消除重复。例如,每十秒钟您可以计算每条消息的出现次数并将其全部记录下来。这克服了您的方法的一个问题,即如果事件发生10次,然后5个小时过去,然后每小时发生一次,那么它在接下来的10个小时内不会出现。不时“刷新”日志消息的缓冲区是很好的,这样您就不会失去操作意识。我所看到的一种行之有效的技术就是只记录发生N次的
,
,据了解,这是指一个特定的时间窗口。