Log4Qt使用筆記 三

2021-06-01 07:49:34 字數 2608 閱讀 9652

在前面,我們提到,除了乙個根root之外,還可以有多個命名的logger存在,為了直觀,我們可以看logmanager的成員函式:

奇怪,除了我們提到的,還有qtlogger和loglogger兩個東西存在,這兩個是什麼東西?原來 馬甲

真實身份

作用qtlogger()

logger("qt")

用來處理qt中的qdebug() qwarning ...

loglogger()

logger("log4qt")

用來記錄該庫自身的日誌

log4qt 有4個環境變數:

log4qt_debug

控制log4qt自身輸出日誌的級別,前面的loglogger()

log4qt_defaultinitoverride

是否忽略預設的初始化(除"false"外均忽略)

log4qt_configuration

用來指定初始化用的配置檔案,在前文的例子中我們**中指定的配置檔案,也可以在此指定

log4qt_configuratorclass

這個東西?在log4qt中似乎沒有使用(fixme)

繼續看例子:

將前面的例子一,注釋掉basicconfigure

#include #include "logger.h"

//#include "basicconfigurator.h"

int main(int argc, char *argv)

此時執行程式,將沒有任何輸出。

f:\bin\> console.exe

f:\bin\>

而如果設定環境變數:

f:\bin>set log4qt_configuration=f:\bin\log4qt.conf

2011-10-29 19:30:55 [root]-[debug] hello dbzhang800!

2011-10-29 19:30:55 [root]-[info] hello qt!

2011-10-29 19:30:55 [root]-[warn] hello 1+1=2

f:\bin\>

配置的檔案的內容如下:

log4j.rootlogger=debug,a1

接下來看看 log4qt_defaultinitoverride 這個東西有什麼用。

同樣是前乙個例子:如果設定還設定了這個環境變數,結果如何?

f:\bin> set log4qt_configuration=f:\bin\log4qt.conf

f:\bin> set log4qt_defaultinitoverride=true

f:\bin> console.exe

f:\bin

恩,又沒有任何輸出了。

只要我們設定了該環境變數,而且其值不是false,那麼就會跳過這些初始化檔案。

重新起作用,需要設為false

f:\bin> set log4qt_defaultinitoverride=false

或者刪除

f:\bin> set log4qt_defaultinitoverride=

只要前面的 log4qt_defaultinitoverride 沒有被設定為flase以外的值,初始化時就會嘗試載入預設配置,它找依次嘗試3個東西

qsettings s;

s.begingroup("log4qt");

s.begingroup("properties");

s.setvalue("log4j.rootlogger", "trace, a1");

零零散散,隨便記錄一下,備忘...

環境變數在 靜態單件物件initialisationhelper 的初始化時被讀取。(對使用者透明)

這些值在程式內可以通過

qhash< qstring, qstring > log4qt::initialisationhelper::environmentsettings ( )

來獲取。對應的key

log4qt_debug

debug

log4qt_defaultinitoverride

defaultinitoverride

log4qt_configuration

configuration

log4qt_configuratorclass

configuratorclass

忘記qdebug()這些東西了,補乙個例子

#include #include "logmanager.h"

int main(int argc, char *argv)

結果如下:

2011-10-29 19:59:10 [qt]-[debug] hello dbzhang800!

2011-10-29 19:59:10 [qt]-[warn] hello qt!

2011-10-29 19:59:10 [qt]-[error] hello 1+1=2 ()

採用的前面例子使用的配置檔案。

Log4Qt 使用筆記 一

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

Log4Qt 使用筆記 二

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

Log4Qt 使用筆記 一

log4qt log4qt 是apache log4j 的qt移植版,所以看log4j的資料應該是最直接有效的 因為log4qt的直接資料太少了 log4qt主要是用來記錄日誌 有助於程式除錯 有3個主要的元件 16 0x00a56708 debug root hello dbzhang800 16...