開源日誌系統log4cplus 四

2021-09-08 03:17:25 字數 1352 閱讀 2287

將log資訊記錄到檔案應該說是日誌系統的乙個基本功能,log4cplus在此基礎上,提供了更多的功能,可以按照你預先設定的大小來決定是否轉儲,當超過該大小,後續log資訊會另存到新檔案中,依次類推;或者按照日期來決定是否轉儲。本文將詳細介紹這些用法。

### 如何將log記錄到檔案 ###

實現了基本的檔案操作功能,建構函式如下:
logger root = logger::getroot();

logger test = logger::getinstance("test");

logger subtest = logger::getinstance("test.subtest");

for(int i=0; i

... ...

執行結果:
執行後會產生6個輸出檔案,test.log、test.log.1、test.log.2、test.log.3、test.log.4、test.log.5

其中test.log存放著最新寫入的資訊,而最後乙個檔案中並不包含第乙個寫入資訊,說明已經被不斷更新了。

需要指出的是,這裡除了test.log之外,每個檔案的大小都是200k,而不是我們想像中的5k,這是因為

log4cplus中隱含定義了檔案的最小尺寸是200k,只有大於200k的設定才生效,<= 200k的設定都會被認為是

200k.

logger root = logger::getroot();

logger test = logger::getinstance("test");

logger subtest = logger::getinstance("test.subtest");

for(int i=0; i

... ...

執行結果:

執行後會以分鐘為單位,分別生成名為test.log.2004-10-17-03-03、test.log.2004-10-17-03-04和

test.log.2004-10-17-03-05這樣的檔案。

需要指出的是,剛看到按照頻度(如hourly、minutely)轉儲這樣的概念,以為log4cplus提供了內部定時器,

感覺很奇怪,因為日誌系統不應該主動記錄,而loging事件總是應該被動觸發的啊。仔細看了源**後才知道

這裡的"頻度"並不是你寫入檔案的速度,其實是否轉儲的標準並不依賴你寫入檔案的速度,而是依賴於寫入

的那一時刻是否滿足了頻度條件,即是否超過了以分鐘、小時、周、月為單位的時間刻度,如果超過了就另存。

本部分詳細介紹log資訊的幾種檔案操作方式,下面將重點介紹一下如何有選擇地控制log資訊的輸出

開源日誌系統 log4cplus 二

本文介紹了使用log4cplus有六個步驟,並提供了一些例子引導你了解log4cplus的基本使用。基本使用 使用log4cplus有六個基本步驟 下面通過一些例子來了解log4cplus的基本使用。using namespace log4cplus using namespace log4cplu...

開源日誌系統 log4cplus 七

經過短暫的熟悉過程,log4cplus已經被成功應用到了我的專案中去了,效果還不錯,除了上文提及的 功能之外,下面將介紹log4cplus提供的執行緒和套接字的使用情況。ndc 首先我們先了解一下log4cplus中嵌入診斷上下文 nested diagnostic context 即ndc。對lo...

開源日誌系統 log4cplus 六

一些可以改進之處 1.使用者自定義loglevel的實現機制不夠開放在第五篇中曾經介紹過如何實現使用者自行定義loglevel,為了實現比較理想的效果,甚至還需要改log4cplus 的源 2.生成logger物件的機制可以改進我在使用時候,經常需要在不同的檔案 函式中操作同乙個logger,雖然l...