Log4Qt 使用筆記 一

2021-08-10 22:14:37 字數 2663 閱讀 1355

沒用過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  - constructor

0 [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] constructor

2011-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這樣的檔案中,然後在需要使用的工程中直接包含這個檔案即可 比如 我們...