什么是好的"退避"用于限制错误记录的算法?

时间:2014-10-09 05:35:22

标签: c++

我想出了一个仅在每10,20,30 ...... 100,200,300 ......,1000,2000中触发的一个,但我想看看是否有更好的方法来做到这一点。 / p>

unsigned long fails = 0;

while (true) {
    if (!checkSomething()) {
        fails++;
        unsigned long backoff = exp10(((unsigned long) log10(fails)));
        if (fails % backoff == 0)
            logError("...");
    }
}

1 个答案:

答案 0 :(得分:5)

似乎合理。另一种方法是将日志排入内存中的某个位置并在计时器上重复删除。例如,您可以每隔十秒计算每封邮件的出现次数并将其全部记录下来。这克服了你的方法的一个问题,即如果事件发生10次,然后5个小时过去,那么它每小时发生一次,它不会再出现10个小时。很高兴能够刷新缓冲区"不时记录日志消息,这样你就不会失去操作意识。