天天看點

我個人的log4cplus-1.2.2的編譯與測試使用,Win7+VS2013環境

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/11052189

VS2017+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

博文講解之初始化

繼續閱讀