Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么是好的;退避”;限制错误日志记录的算法?_C++ - Fatal编程技术网

C++ 什么是好的;退避”;限制错误日志记录的算法?

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 =

我想出了一个只在每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 == 0)
            logError("...");
    }
}

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

我所看到的一种行之有效的技术就是只记录发生N次的
,据了解,这是指一个特定的时间窗口。