Log4Qt 使用筆記 一

2021-08-30 04:29:55 字數 1934 閱讀 7571

log4qt

log4qt 是apache log4j 的qt移植版,所以看log4j的資料應該是最直接有效的(因為log4qt的直接資料太少了)。

log4qt主要是用來記錄日誌(有助於程式除錯)。有3個主要的元件:

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()

object obj;

return 0;

}結果:

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"

2011-10-29 13:52:06 [object]-[info] constructor

2011-10-29 13:52:06 [object]-[info] destructor

注意,本例中,我們沒有使用預設配置,而是使用了乙個配置檔案log4qt.conf,放在了可執行程式所在目錄下面

配置根logger

其語法level 控制日誌輸出的級別:

off關閉所有日誌輸出

fatal

error

建議使用的幾個級別?,高於指定級別的日誌才被輸出

warn

info

debug

trace

all所有日誌均輸出

控制台檔案

每天產生乙個日誌檔案

檔案大小到達指定尺寸的時候產生乙個新的檔案

配置layout

語法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 使用筆記 一

沒用過log4j和log4cxx,初次接觸log4qt,還真有點頭昏腦脹,無論如何,先簡單記錄一下。log4qt 是apache log4j 的qt移植版,所以看log4j的資料應該是最直接有效的 因為log4qt的直接資料太少了 log4qt主要是用來記錄日誌 有助於程式除錯 有3個主要的元件 l...

Log4Qt使用筆記 三

在前面,我們提到,除了乙個根root之外,還可以有多個命名的logger存在,為了直觀,我們可以看logmanager的成員函式 奇怪,除了我們提到的,還有qtlogger和loglogger兩個東西存在,這兩個是什麼東西?原來 馬甲 真實身份 作用qtlogger logger qt 用來處理qt...

Log4Qt 使用筆記 二

本文標題取為 qmake下使用一例 以log4qt為例 可能會更好一點。想想還是就這樣吧。不少人使用第三方庫時都是 找出必要的檔案 然後新增進自己的工程 一般來說,我們可以將所有和這個庫有關的東西放置到乙個liblog4qt.pri這樣的檔案中,然後在需要使用的工程中直接包含這個檔案即可 比如 我們...