log4cpp編譯
⑴ 為什麼log4cpp怎麼就編譯不過
Log4cxx需要依賴於APR。Log4cpp較log4c移植性稍差些。Log4c基本上都是一些純c的東西閉彎猜,移植性比其他二轎型者都要好log4cplus: 簡潔, 下載的包編譯順利, 測試例子也能鬧宏順利運行。log4cxx: 臃腫, 需要引用apr(Apache Portable Runtime), 最痛苦的是老是編譯不了。log4cpp: 落後, 最後更新於2007年,而且下載的包不完整。
⑵ Log4cpp的下載安裝
2.1 下載
下載版本0.3.5rc3,這個版本目前是最穩定的,版本1.0在VC中表現不穩定。下載後的包名字為:log4cpp-0.3.5rc3.tar.gz(源代碼包)和log4cpp-docs-0.3.5rc3.tar.gz(文檔壓縮包)。將它們解壓後放入D盤。
2.2 在VC6中編譯Log4cpp
進入D:log4cpp-0.3.5rc3msvc6目錄,打開VC6的工作區msvc6.dsw,將其中的工程都刪除,只保留log4cpp和log4cppDLL兩個工程。分別編譯它們的Debug和Release版本。
在VC6中編譯Log4cpp會報錯,其實只有一個錯誤,即不能在頭文件中定義變數,同時給變數賦默認值。修改方法如下:將頭文件Priority.hh中的這一行:
static const int MESSAGE_SIZE = 8;
改為:
static const int MESSAGE_SIZE;
並在Priority.cpp中的所有include語句後加上:const int log4cpp::Priority::MESSAGE_SIZE = 8;
編譯鏈接成功後會得到log4cppD.dll、log4cppD.lib(Debug版的dll和lib文件)和log4cpp.dll、log4cpp.lib(Release版的dll和lib文件)。新建目錄D:log4cpp-0.3.5rc3lib,將以上四個文件拷貝到該目錄下。在VC中添加設置lib和include路徑。
將D:log4cpp-0.3.5rc3lib加入系統的Path路徑中。
⑶ 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進行開發
⑷ log4cpp,log4cplus,log4cxx這幾個包之間是什麼關系
Log4cxx需要依賴於APR。
Log4cpp較log4c移植性稍差些。
Log4c基本上都是一些純c的東西,移植性比其他二者都要好
log4cplus: 簡潔, 下載的包編譯順利, 測試例子也能順利運行。
log4cxx: 臃腫, 需要引用apr(Apache Portable Runtime), 最痛苦的是老是編譯不了。
log4cpp: 落後, 最後更新於2007年,而且下載的包不完整。
⑸ linux上編譯log4cpp1.0包時出現錯誤。
出這個問題不應該,我懷疑你的這個程序源代碼和你當前用的系統發布時間差距太大,導致這個命令執行有問題。
或者就是某些腳本的語法已經變了。你用錯 shell 解釋器了
——————————————————————————
你的 configure 參數有問題?你最好能貼出全部的命令和輸出。
陳學陽 那傻-逼就是刷子。我見到他好幾次發根本沒意義的內容了,他現在都刷的快比我等級高了。我都懶的在認真回答問題了。網路那群腦殘也不管管。網路這么大的網站還需要這么多垃圾水貼充門面?
⑹ C++編寫Windows服務程序中調用Log4cpp產生日誌問題
log4CPlus
我用的是這個螞腔孝,很好用,封裝可參考網頁,路徑輸出什麼的只圓枯需改改配置文件,無需重新編譯代碼。看樣子你有基礎悶稿的,相信你可以看懂。
⑺ Log4cpp的編譯方法
讓我們從一個簡單的例子開始,該例子將兩條日誌信息寫入字元串流,該流會在標准控制台cout上輸出,項目的名稱是HelloLog4Cpp:
#include <iostream>
#include log4cpp/Category.hh
#include log4cpp/OstreamAppender.hh
#include log4cpp/BasicLayout.hh
#include log4cpp/Priority.hh
using namespace std;
int main(int argc, char* argv[])
{
log4cpp::OstreamAppender* osAppender = new log4cpp::OstreamAppender(osAppender, &cout);
osAppender->setLayout(new log4cpp::BasicLayout());
log4cpp::Category& root = log4cpp::Category::getRoot();
root.addAppender(osAppender);
root.setPriority(log4cpp::Priority::DEBUG);
root.error(Hello· log4cpp in a Error Message!);
root.warn(Hello ·log4cpp in a Warning Message!);
log4cpp::Category::shutdown();
return 0;
}
要順利編譯運蘆兄伏行還有兩個地方需要設置,其一是引入的庫中加上log4cppD.lib(debug版dll庫的引入文件),即在頭文件處加上陪攜#pragma comment(lib, log4cppD.lib);其二是塵拍將C/C++的Code Generation中的Use Runtime library設置為「Debug Multithreaded DLL」。設置完成後編譯運行結果如下:
1248337987 ERROR : Hello· log4cpp in a Error Message!
1248337987 WARN : Hello· log4cpp in a Warning Message!
以上兩條日誌格式很簡陋,要設置合乎心意的日誌格式,請參考後續的PatternLayout章節。