天天看點

log4cpp的使用

1.官網

http://log4cpp.sourceforge.net/

2.編譯(windows ) vs2010

log4cpp的使用
log4cpp的使用

直接打開:

log4cpp的使用

log4cpp工程是生成動态庫的,log4cppLIB是生成靜态庫的,然而我沒有編譯成功。

報下面的錯:

CUSTOMBUILD : fatal error RC1110: could not open .\Debug\NTEventLogCategories.rc
1>  
1>  Microsoft (R) Incremental Linker Version 10.00.40219.01
1>  Copyright (C) Microsoft Corporation.  All rights reserved.
1>  
1>LINK : fatal error LNK1181: 無法打開輸入檔案“.\Debug\NTEventLogCategories.res”
           

3.編譯成功後,若是Debug下的話,在log4cpp檔案夾下的Debug生成log4cpp.lib和log4cpp.dll

 添加到自己工程使用(方法略)。

 将log4cpp的配置都寫到一個頭檔案裡,供工程所有地方調用。

#ifndef _DNC_LOG
#define _DNC_LOG
#include<log4cpp/Category.hh>
#include<log4cpp/OstreamAppender.hh>
#include<log4cpp/Priority.hh>
#include<log4cpp/PatternLayout.hh>
#include<log4cpp/FileAppender.hh>

#define MYLOG_INFO  MYLog::instance()->getLogType()->info
#define MYLOG_WARN  MYLog::instance()->getLogType()->warn
#define MYLOG_DEBUG MYLog::instance()->getLogType()->debug
#define MYLOG_ERROR MYLog::instance()->getLogType()->error
class MYLog{
public:
	
	void initlog(){
		
		log4cpp::Appender *appender = new log4cpp::FileAppender("root", "mylog.log");
		//設定輸出格式(layout)
		log4cpp::PatternLayout *patternLayout = new log4cpp::PatternLayout();
		patternLayout->setConversionPattern("%d [%p] - %m%n");
		appender->setLayout(patternLayout);
		//_category = &log4cpp::Category::getRoot();
		_category->setPriority(log4cpp::Priority::DEBUG);//日志輸出級别
		_category->addAppender(appender);
	}
	static  MYLog* instance(){
		//if (_instance == NULL)
		//_instance = new DNCLog();
		return _instance;
	}
	log4cpp::Category* getLogType()
	{
		return _category;
	}

protected:
	MYLog(){};
	static MYLog *_instance;
	static log4cpp::Category* _category;

};
MYLog* MYLog::_instance = new MYLog();
log4cpp::Category* MYLog::_category = &log4cpp::Category::getRoot();
#endif
           

使用方法:

//開啟日志子產品
	MYLog *mylog = MYLog::instance();
	mylog->initlog();
           

在代碼中:

int tmp = 999;
 const char * p = "heloo";
 MYLOG_WARN("warn%d----%s",tmp,p);