1. 程式人生 > >開源日誌log4cplus-1.2.0使用1

開源日誌log4cplus-1.2.0使用1

網上的方法不能照搬,這裡總結下,實測有效。

1 Log4cplus簡介
   log4cplus是C++編寫的開源的日誌系統,前身是java編寫的log4j系統,受Apache Software License保護,作者是Tad E. Smith。
   log4cplus具有執行緒安全、靈活、以及多粒度控制的特點,通過將日誌劃分優先順序使其可以面向程式除錯、執行、測試、和維護等全生命週期。你可以選擇將日誌輸出到螢幕、檔案、NT event log、甚至是遠端伺服器;通過指定策略對日誌進行定期備份等等。
2 安裝方法
只講windows下的:linux下的沒有實際測試,就不寫了。

                下載壓縮包:log4cplus-1.2.0.7z

解壓縮,進入log4cplus-1.2.0\msvc10\

用vs2010編譯log4cplus.sln,生成lib及dll,目錄在log4cplus-1.2.0\msvc10\Win32\bin.Debug

3,測試:

用vs2010寫測試程式,把include資料夾及庫檔案都放到你測試程式的工程下,設定好包含目錄,庫目錄。

編寫測試程式:實測可執行

#include <log4cplus/logger.h>
#include <log4cplus/consoleappender.h>
#include <log4cplus/layout.h>
#include <log4cplus/helpers/sleep.h>
#include <log4cplus/loggingmacros.h>


#pragma comment(lib,"../lib/log4cplusD.lib")

using namespace log4cplus;
using namespace log4cplus::helpers;

int main()
{
	/* step 1: 設定一個輸出物件,就是在哪裡輸出日誌,螢幕就是console */
	SharedObjectPtr<Appender> _append (new ConsoleAppender());
	_append->setName(LOG4CPLUS_TEXT("append for test"));
	/* step 2: 設定一個日誌輸出格式的物件 ,這裡格式為時間 工作目錄檔案,行以及換行 */
	   //std::string pattern = "%d{%m/%d/%y %H:%M:%S}  - %m [%l]%n";
	   log4cplus::tstring pattern = LOG4CPLUS_TEXT("%d{%m/%d/%y %H:%M:%S}  - %m [%l]%n");
	   std::auto_ptr<Layout> _layout(new PatternLayout(pattern));
	   /* step 3: 繫結螢幕和格式物件 */
	   _append->setLayout( _layout );
	   /* step 4: 設定一個日誌物件,還有名字 */
	   Logger _logger = Logger::getInstance(LOG4CPLUS_TEXT("test"));
       /* step 5: 繫結日誌物件和螢幕  */
	   _logger.addAppender(_append);
	   /* step 6: Se設定日誌優先順序,應該是列印那些級別的日誌  */
	   _logger.setLogLevel(ALL_LOG_LEVEL);
	   /* log activity */
	   LOG4CPLUS_DEBUG(_logger, "This is the FIRST log message...");
	   log4cplus::helpers::sleep(1);
	   LOG4CPLUS_WARN(_logger, "This is the SECOND log message...");
	   return 0;
}

也就是使用這個日誌一般有6個步驟,但是也不是必須的。

4,書面解釋:

類名    說明
Filter            過濾器,過濾輸出訊息。
Layout          佈局器,控制輸出訊息的格式。
Appender       掛接器,與佈局器和過濾器緊密配合,將特定格式的訊息過濾後輸出到所掛接的裝置終端如螢幕,檔案等等)。
Logger           記錄器,儲存並跟蹤物件日誌資訊變更的實體,當你需要對一個物件進行記錄時,就需要生成一個logger。
Hierarchy         分類器,層次化的樹型結構,用於對被記錄資訊的分類,層次中每一個節點維護一個logger的所有資訊。


LogLevel         優先權,包括TRACE, DEBUG, INFO, WARNING, ERROR, FATAL。
基本步驟
   使用log4cplus有六個基本步驟:
 例項化一個封裝了輸出介質的appender物件;
 例項化一個封裝了輸出格式的layout物件;
 將layout物件繫結(attach)到appender物件;
   如省略此步驟,簡單佈局器SimpleLayout(參見5.1小節)物件會繫結到logger。
 例項化一個封裝了日誌輸出logger物件,並呼叫其靜態函式getInstance()獲得實  
  例,log4cplus::Logger::getInstance("logger_name");
 將appender物件繫結(attach)到logger物件;
設定logger的優先順序,如省略此步驟,各種有限級的日誌都將被輸出。