在前面,我們提到,除了乙個根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.exef:\bin\>
而如果設定環境變數:
f:\bin>set log4qt_configuration=f:\bin\log4qt.conf2011-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...