2010-10-31 32 views
0

我在我的應用程序中使用boost日誌進行日誌記錄。Logging Guard來限制半常量日誌消息

但是,在我的代碼的某些部分,我有一些日誌語句,如果出現錯誤,可能會經常發生。我想要一些能夠限制日誌消息的警衛,當它檢測到相同的日誌消息不斷出現時。

例如(這是一個簡單的例子,而不是實際執行)

while(!framebuffer.try_pop(frame)) 
{ 
    BOOST_LOG(trace) << "Buffer underrun."; 
} 

如果由於某種原因「幀緩衝」沒有收到任何幀長一段時間的記錄將發送辦法不多日誌消息。

但是我不確定用什麼策略來限制日誌消息,而不會丟失任何重要的消息,以及如何實現它。

回答

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."; 
} 

只是要小心整數溢出的對「計數」變量,如果你得到增量的絕對bucketload。