1. 程式人生 > >windows下使用log4cplus教程

windows下使用log4cplus教程

下載log4cplus
編譯生成dll
下載完成後解壓,開啟log4cplus.sln檔案,選擇log4cplus專案,右鍵-》屬性-》配置屬性-》字符集,選擇Unicode字符集,如下圖所示。(log4cplus預設使用多位元組字符集,而VS新建專案預設使用Unicode字符集,如果不修改此處,則後面新建專案使用生成的dll時需要手動修改新建的專案為多位元組字符集,否則會報錯,總之兩邊統一用一種即可)
然後,編譯專案生成log4cplusD.dll和log4cplusD.lib檔案,在msvc10\Win32\bin.Debug目錄下,如果使用靜態庫的編譯下面一個log4cplusS的專案,本文中採用動態連結庫的形式。
使用dll
新建一個解決方案和專案,將下載檔案中的include資料夾複製到新建的解決方案資料夾中,並在專案-》屬性-》C/C++ -》常規 的附加包含目錄增加剛複製的include資料夾路徑,如下圖所示
複製剛才生成的log4cplusD.dll和log4cplusD.lib檔案到解決方案中,我新建了一個lib的資料夾,並在專案-》屬性-》連結器 -》常規 的附加庫目錄中增加該路徑,如下圖所示
接著繼續選擇專案-》屬性-》連結器 -》輸入,在附加依賴項中增加log4cplusD.lib 如下圖所示
最後,在專案-》屬性-》除錯 的環境下增加 PATH=你的lib資料夾所在路徑,如下圖所示
當然,也可以直接把include和lib、dll放到開發環境系統下相應的目錄中,這樣就不需要配置上述幾個路徑,只需要配置一下依賴項,編譯器也能找到這些檔案。
程式設計測試
這裡直接使用了示例中fileappender_test的程式碼,目前我的專案中使用的就是記錄到檔案的,測試了下沒有問題,其他的沒有測試,下面是程式碼
#include <log4cplus/logger.h>
#include <log4cplus/fileappender.h>
#include <log4cplus/layout.h>
#include <log4cplus/ndc.h>
#include <log4cplus/helpers/loglog.h>
#include <log4cplus/loggingmacros.h>
 
 
using namespace log4cplus;
 
const int LOOP_COUNT = 20000;
 
 
int
main()
{
    log4cplus::initialize ();
    helpers::LogLog::getLogLog()->setInternalDebugging(true);
    SharedAppenderPtr append_1(
        new RollingFileAppender(LOG4CPLUS_TEXT("Test.log"), 5*1024, 5));
    append_1->setName(LOG4CPLUS_TEXT("First"));
    append_1->setLayout( std::auto_ptr<Layout>(new TTCCLayout()) );
    Logger::getRoot().addAppender(append_1);
 
    Logger root = Logger::getRoot();
    Logger test = Logger::getInstance(LOG4CPLUS_TEXT("test"));
    Logger subTest = Logger::getInstance(LOG4CPLUS_TEXT("test.subtest"));
 
    for(int i=0; i<LOOP_COUNT; ++i) {
        NDCContextCreator _context(LOG4CPLUS_TEXT("loop"));
        LOG4CPLUS_DEBUG(subTest, "Entering loop #" << i);
    }
 
 
    return 0;
}

最後編譯執行即可,如果執行出現找不到dll的問題,再複製一份lib和dll到你生成的exe所在目錄下即可解決。執行的結果是專案路徑下Test.log,Test.log.1~Test.log.5五個檔案,可以開啟看裡面的內容。 --------------------- 作者:xinyunyxq 來源:CSDN 原文:https://blog.csdn.net/xinyunyxq/article/details/19011315?utm_source=copy 版權宣告:本文為博主原創文章,轉載請附上博文連結!