1.官網
http://log4cpp.sourceforge.net/
2.編譯(windows ) vs2010
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLwhnMaVnVHFmek1mYsJ0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxMjNzUTOxcTM2ETNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
直接打開:
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);