log4cplus源碼下載下傳: https://sourceforge.net/projects/log4cplus/files/log4cplus-stable/ https://github.com/log4cplus/log4cplus log4cplus官方示例: https://sourceforge.net/p/log4cplus/wiki/CodeExamples/
一、編譯庫
解壓出來後,log4cplus-1.2.2目錄裡面有個msvc10目錄,是VS的編譯平台,可以用vs2013打開,裡面有很多項目。實際隻要編譯log4cplus或log4cplusS就行。一個是動态連結庫,一個是靜态連結庫。根據預設的屬性編譯,順利編譯成功。
本人選擇Unicode編碼格式,分别編譯出32位和64位的動态庫和靜态庫。庫的路徑如下:
\Win32\bin.Debug_Unicode
\Win32\bin.Release_Unicode
\x64\bin.Debug_Unicode
\x64\bin.Release_Unicode
二、VS2013配置
工程-屬性-C/C++/正常/附加包含目錄:
..\log4cplus-1.2.2\include
工程-屬性-連結器/正常/附加庫目錄:
32位:
..\log4cplus-1.2.2\lib\Win32\bin.Debug_Unicode
..\log4cplus-1.2.2\lib\Win32\bin.Release_Unicode
64位:
..\log4cplus-1.2.2\lib\x64\bin.Debug_Unicode
..\log4cplus-1.2.2\lib\x64\bin.Release_Unicode
工程-屬性-連結器/輸入/附加依賴項,本人使用動态庫,不用靜态庫:
log4cplusUD.lib
log4cplusU.lib
三、配置檔案logconfig.properties
#TRACE~FATAL各種級别的日志都輸出到同一個目錄中,可以通過調整log4cplus.rootLogger=DEBUG,APPNDER_FILE中的DEBUG為其它級别,進行日志過濾。
log4cplus.rootLogger=DEBUG,APPNDER_FILE
#設定日志追加到檔案尾
log4cplus.appender.APPNDER_FILE=log4cplus::RollingFileAppender
#設定日志檔案大小
log4cplus.appender.APPNDER_FILE.MaxFileSize=100MB
#設定生成日志最大個數
log4cplus.appender.APPNDER_FILE.MaxBackupIndex=2
#設定輸出日志路徑
log4cplus.appender.APPNDER_FILE.File=log\test.log
log4cplus.appender.APPNDER_FILE.layout=log4cplus::PatternLayout
#設定日志列印格式
log4cplus.appender.APPNDER_FILE.layout.ConversionPattern=|%D:%d{%Q}|%p|%t|%l|%m|%n
#設定日志級别範圍
log4cplus.appender.APPNDER_FILE.filters.1=log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.APPNDER_FILE.filters.1.LogLevelMin=TRACE
log4cplus.appender.APPNDER_FILE.filters.1.LogLevelMax=FATAL
log4cplus.appender.APPNDER_FILE.filters.1.AcceptOnMatch=true
log4cplus.appender.APPNDER_FILE.filters.2=log4cplus::spi::DenyAllFilter
四、初始化與退出
log4cplus::Initializer建立了一個Initializer執行個體,這麼做會對log4cplus内部進行初始化。如果不使用Initializer執行個體對logcplus進行初始化,程式不能正常工作至結束。這個類可以被執行個體化多次。Initializer類維護着一個引用計數器。當引用計數器為0,且最後的Initializer執行個體被銷毀時,log4cplus的内部構件将會被停止工作。log4cplus被關停後,将無法再重新初始化。不管怎樣,main函數退出後,我們無法繼續使用log4cplus。
如何在C++類裡面初始化log4cplus?log4cplus V1和V2版本有不同:
1、log4cplus V1.x
構造函數調用log4cplus::initialize(),析構函數調用log4cplus::Logger::shutdown();
CMyLoggerV1::CMyLoggerV1()
{
log4cplus::initialize();
}
CMyLoggerV1::~CMyLoggerV1()
{
log4cplus::Logger::shutdown();
}
2、log4cplus V2.x
定義成員變量即可。
class CMyLoggerV2
{
private:
log4cplus::Initializer m_initializer;
}
五、VS2013+log4cplus 1.2.2完整的測試工程和庫,請下載下傳:
https://download.csdn.net/download/libaineu2004/11052189VS2017+log4cplus 1.2.2+log4cplus 2.0.5完整的測試工程和庫,請下載下傳:
https://download.csdn.net/download/libaineu2004/12120914------------------------------------------
參考文獻
https://github.com/xiaodajiang/logcc基于log4cplus封裝的簡單易用的c++日志庫
https://blog.csdn.net/u014695839/article/details/84753599博文講解之Hello world程式
https://blog.csdn.net/calmreason/article/details/52025726博文講解之初始化