沒用過log4j和log4cxx,初次接觸log4qt,還真有點頭昏腦脹,無論如何,先簡單記錄一下。
log4qt 是apache log4j 的qt移植版,所以看log4j的資料應該是最直接有效的(因為log4qt的直接資料太少了)。
log4qt主要是用來記錄日誌(有助於程式除錯)。有3個主要的元件:
logger
提供日誌記錄服務,可以有多個logger存在,每個有它們自己的名字。logger間存在隸屬關係,有乙個logger稱為根logger。
用來指明將日誌記錄到什麼地方:比如,控制台、檔案、資料庫,等等
layout
控制日誌的輸出格式,可以模擬一下c中的printf哈。
乙個簡單的使用log4qt的qt程式:(使用基礎配置和根logger)
#include #include "logger.h"#include "basicconfigurator.h"
int main(int argc, char *argv)
結果如下:
16 [0x00a56708] debug root - hello dbzhang800!16 [0x00a56708] info root - hello qt!
16 [0x00a56708] warn root - hello 1+1=2
稍微擴充一點,使用自己定義的logger
#include #include "logger.h"#include "basicconfigurator.h"
class object
~object()
};int main(int argc, char *argv)
結果:
0 [0x00a56708] info object - constructor0 [0x00a56708] info object - destructor
在類object中,我們可以使用名為"object"的logger。恩,直接指定類名是可以的。可是我們現在在qt下啊。qt的元物件系統中包含類的名字,故爾我們可以直接使用。
用使用元物件系統,那麼必須使用q_object巨集,然後我們從元物件系統獲取類的名字,然後建立乙個相應的logger就行了。
不過log4qt,既然是為qt準備的,那麼就要為qt程式解憂嘛,也就是巨集
log4qt_declare_qclass_logger
這個巨集展開後成為該類的乙個成員函式,返回乙個logger,我們就可以直接使用了:
#include #include "logger.h"#include "propertyconfigurator.h"
class object:public qobject
~object()
};#include "main.moc"
int main(int argc, char *argv)
程式的輸出結果如下:
2011-10-29 13:52:06 [object]-[info] constructor2011-10-29 13:52:06 [object]-[info] destructor
注意,本例中,我們沒有使用預設配置,而是使用了乙個配置檔案log4qt.conf,放在了可執行程式所在目錄下面
log4j.rootlogger=debug,a1
額,沒錯,裡面的這些東西確實都是以log4j打頭的,所以需要看log4j的手冊來搞清楚這些東西:
配置a1,輸出到控制台
設定a1採用的layout,並設定其具體格式
我是不是太了解,簡單整理一下:
配置根logger
其語法
其中:
off關閉所有日誌輸出
fatal
error
建議使用的幾個級別?,高於指定級別的日誌才被輸出
warn
info
debug
trace
all所有日誌均輸出
注:除rootlogger外,還可以對各個logger分別設定 語法
...
控制台 檔案
每天產生乙個日誌檔案
檔案大小到達指定尺寸的時候產生乙個新的檔案 語法
…其中:
log4j提供的layout有
org.apache.log4j.htmllayout
以html**形式布局
org.apache.log4j.patternlayout
可以靈活地指定布局模式
org.apache.log4j.******layout
包含日誌資訊的級別和資訊字串
org.apache.log4j.ttcclayout
包含日誌產生的時間、執行緒、類別等等資訊
格式控制符: %m
輸出**中指定的訊息
%p輸出優先順序,即debug,info,warn,error,fatal
%c輸出logger的名字,通常就是所在類的全名
%n輸出乙個回車換行符
%d輸出時間,預設格式為iso8601,也可以指定格式,比如:%d,類似:2023年10月28日 14:10:28
Log4Qt 使用筆記 一
log4qt log4qt 是apache log4j 的qt移植版,所以看log4j的資料應該是最直接有效的 因為log4qt的直接資料太少了 log4qt主要是用來記錄日誌 有助於程式除錯 有3個主要的元件 16 0x00a56708 debug root hello dbzhang800 16...
Log4Qt使用筆記 三
在前面,我們提到,除了乙個根root之外,還可以有多個命名的logger存在,為了直觀,我們可以看logmanager的成員函式 奇怪,除了我們提到的,還有qtlogger和loglogger兩個東西存在,這兩個是什麼東西?原來 馬甲 真實身份 作用qtlogger logger qt 用來處理qt...
Log4Qt 使用筆記 二
本文標題取為 qmake下使用一例 以log4qt為例 可能會更好一點。想想還是就這樣吧。不少人使用第三方庫時都是 找出必要的檔案 然後新增進自己的工程 一般來說,我們可以將所有和這個庫有關的東西放置到乙個liblog4qt.pri這樣的檔案中,然後在需要使用的工程中直接包含這個檔案即可 比如 我們...