log4cplus編譯
⑴ Log4cpp的優點
Log4cpp是個基於LGPL的開源項目,移植自Java的日誌處理跟蹤項目log4j,並保持了API上的一致。其類似的支持庫還包括Java(log4j),C++(log4cpp、log4cplus),C(log4c),python(log4p)等。
Log4cpp有如下優點:
1. 提供了可擴展的多種日誌記錄方式;
2. 提供了NDC(嵌套診斷上下文),可用於多線程、多場景的跟蹤調試;
3. 提供了完整的日誌動態優先順序控制,可隨時調整需要記錄的日誌優先順序;
4. 可通過配置文件完成所有配置並動態載入;
5. 性能優秀,內存佔用小,經過編譯後的log4cpp.dll大小僅有160kb;
6. 代碼級的平台無關性,Log4cpp源代碼經過編譯後,適用於大多數主流的操作系統和開發工具;
7. 概念清晰,學習和使用方便,熟練程序員一天之內即可很好地應用log4cpp進行開發

⑵ 怎麼分析log4cplus日誌
Log4j是一個C++庫,編譯以後即可使用。同時log4cplus支持windows和linux:
http://www.open-open.com/lib/view/open1387203808156.html
圖文教程,請參考,按步驟進行操作
⑶ log4cpp,log4cplus,log4cxx這幾個包之間是什麼關系
Log4cxx需要依賴於APR。
Log4cpp較log4c移植性稍差些。
Log4c基本上都是一些純c的東西,移植性比其他二者都要好
log4cplus: 簡潔, 下載的包編譯順利, 測試例子也能順利運行。
log4cxx: 臃腫, 需要引用apr(Apache Portable Runtime), 最痛苦的是老是編譯不了。
log4cpp: 落後, 最後更新於2007年,而且下載的包不完整。
⑷ Qt 中log4cplus:ERROR No appenders could be found for logger (AdSyncNamespace).
這個提示在有的機器上有,有的機器上沒有,編譯qt程序時並沒有引用這個庫,懷疑跟機器環境有關系,我也在尋求關掉這個提示的方法,網上說卸掉AutoDesk360可以解決,親測有效!
⑸ log4cplus fileappender怎麼實現追加寫日誌
在官方網站下載最新log4cplus源碼,通過以下幾步安裝:
1、解壓源碼
tar xvzf log4cplus-x.x.x.tar.gz
2、進入解壓目錄安裝
cd log4cplus-x.x.x
2.1、配置編譯選項,可以configure跟--help參數查看所有配置選項幫助
./configure
2.2、編譯並安裝
make
make install
這里我採用預設安裝路徑:/usr/local,可以通過--prefix=/install/path指定安裝路徑。
二、log4cplus內容簡介與配置文件使用
log4cplus內容介紹
1. Logger對象
Logger對象具有層次結構,按名稱區分,如下代碼:
在log4cplus中logger的存儲機制中,所有logger都通過一個層次化的結構來組織的,有一個Root級別的logger,可以通過以下方法獲取:
Logger root = Logger::getRoot();
用戶定義的logger都有一個名字與之對應,比如:
Logger test = Logger::getInstance("test");
可以定義該logger的子logger:
Logger subTest = Logger::getInstance("test.subtest");
注意Root級別的logger只有通過getRoot方法獲取,Logger::getInstance("root")獲得的是它的子對象而已。有了這些具有父子關系的logger之後可分別設置其LogLevel,比如:
root.setLogLevel( ... );
Test.setLogLevel( ... );
subTest.setLogLevel( ... );
2. 優先順序
log4cplus優先順序有低到高:
NOT_SET_LOG_LEVEL :接受預設的LogLevel,如果有父logger則繼承它的LogLevel
ALL_LOG_LEVEL :開放所有log信息輸出
TRACE_LOG_LEVEL :開放trace信息輸出(即ALL_LOG_LEVEL)
DEBUG_LOG_LEVEL :開放debug信息輸出
INFO_LOG_LEVEL :開放info信息輸出
WARN_LOG_LEVEL :開放warning信息輸出
ERROR_LOG_LEVEL :開放error信息輸出
FATAL_LOG_LEVEL :開放fatal信息輸出
OFF_LOG_LEVEL :關閉所有log信息輸出
⑹ Qt Creator編譯程序出現log4cplus:ERROR No appenders could be found for logger (AdSyncNamespace).
配置文件錯誤,可能是與系統不兼容的緣故吧。
⑺ log4cpp:logger有什麼函數
C++日誌庫,log4cplus,log4cpp使用資料手冊
1 下載log4cpp並解壓。
2 打開\log4cpp-0.3.4b\msvc6\msvc6.dsw
編譯log4cpp工程Release版。
3 將編譯後的log4cpp.lib復制到VC的Lib目錄中。
4 將頭文件的目錄log4cpp-0.3.4b\include\log4cpp\
復制到VC的Include目錄.
(或者添加log4cpp-0.3.4b\include到VC的Include環境變數)
5 目標工程包含庫
log4cpp.lib ws2_32.lib
復制到VC的Lib目錄.
(要選擇庫連接方式相同的庫)
6 包含頭文件
日誌記錄
#include <log4cplus/logger.h>
日誌配置讀取
#include <log4cplus/consoleappender.h>
NDC
#include <log4cplus/loglevel.h>
日誌代碼
每個類可以有自己的類別(log4cpp::Category),可以在配置文件中添加該類別並設置日誌級別。
所有的log4cpp::Category都使用同一個Appender,不同的Category配置為不同的日誌級別,就可以控制日誌輸出的范圍。
一般只使用四個記錄日誌級:DEBUG,INFO,WARN,ERROR
如:
log4cpp::Category::getRoot().info("Now run line %d", __LINE__);
或使用非根類別
log4cpp::Category::getInstance("MyCat").info("Now run line %d", __LINE__);
使用流:
log4cpp::Category::getInstance("main_cat").infoStream()
<< "This will show up as "
<< 1 << " emergency message"
<< log4cpp::CategoryStream::ENDLINE;
具體的函數說明見api文檔.
7 讀取配置代碼
讀取log配置文件,應在log4cpp靜態成員初始化之後。
如在CXXXApp::InitInstance()中
try
{
log4cpp::PropertyConfigurator::configure("log.ini");
}
catch (log4cpp::ConfigureFailure e)
{
log4cpp::Category::getRoot().warn(e.what());
}
⑻ log4cplus 符合最新的c++標准嗎
log4cplus是復合最新C++標準的、凡是用到最新C++11特性的地方都使用預編譯宏區分了的,在編譯時候使用cmake會自動檢查你的編譯器是否支持C++最新標准,如果支持就會使用那個宏。比如右值引用、線程、原子鎖等等很多特性在log4cplus中都有體現。
⑼ log4cplus 日誌要怎麼填入工程
1、解壓源碼
tar xvzf log4cplus-x.x.x.tar.gz
2、進入解壓目錄安裝
cd log4cplus-x.x.x
2.1、配置編譯選項,可以configure跟--help參數查看所有配置選項幫助
./configure
2.2、編譯並安裝
make
make install
這里我採用預設安裝路徑:/usr/local,可以通過--prefix=/install/path指定安裝路徑。
