- 到官网下载https://sourceforge.net/projects/log4cpp/files/
- 下载后解压,打开msvc10,使用vs2010及以上版本进行编译(log4cpp是我目前碰到过最好编译的开源软件)
- 将include文件夹拷贝至需要使用的项目中,剩下的使用和其他库一致
- 添加一个日志工具类 CLogUtil
#pragma once
#include <iostream>
using namespace std;
class CLogUtil
{
public:
static int init(string initFileName = "./log4cpp.conf");
static void close();
static void d(string Tag, string msg);
static void D(string Tag, string msg);
static void info(string msg);
static void error(string msg);
};
#include "LogUtil.h"
#include <log4cpp/Category.hh>
#include <log4cpp/PropertyConfigurator.hh>
int CLogUtil::init(string initFileName) {
try {
log4cpp::PropertyConfigurator::configure(initFileName);
}
catch (log4cpp::ConfigureFailure&f) {
std::cout << "Configure Problem " << f.what() << std::endl;
return -1;
}
return 0;
}
void CLogUtil::close() {
log4cpp::Category::shutdown();
}
void CLogUtil::d(string Tag, string msg) {
log4cpp::Category&sub1 = log4cpp::Category::getInstance(Tag);
LOG4CPP_DEBUG(sub1, msg);
}
void CLogUtil::D(string Tag, string msg) {
d(Tag, msg);
}
void CLogUtil::info(string msg)
{
log4cpp::Category&sub1 = log4cpp::Category::getInstance(std::string("sub1"));
sub1.info(msg);
}
void CLogUtil::error(string msg)
{
log4cpp::Category&sub1 = log4cpp::Category::getRoot();
sub1.error(msg);
}
- 配置文件log4cpp.conf
log4cpp.rootCategory=DEBUG, rootAppender
log4cpp.category.sub1=,A1
log4cpp.category.sub1.sub2=INFO,A2
log4cpp.appender.rootAppender=ConsoleAppender
log4cpp.appender.rootAppender.layout=PatternLayout
log4cpp.appender.rootAppender.layout.ConversionPattern=[%p] %d{%H:%M:%S.%l} (%c) %t : %m%n
log4cpp.appender.A1=FileAppender
log4cpp.appender.A1.fileName=A1.log
log4cpp.appender.A1.layout=SimpleLayout
log4cpp.appender.A2=RollingFileAppender
log4cpp.appender.A2.fileName=./log/A2.log
log4cpp.appender.A2.layout=PatternLayout
log4cpp.appender.A2.layout.ConversionPattern=The message '%m' at time %d%n
- 使用
int main(int argc, char **argv) {
CLogUtil::init();
CLogUtil::info("info!");
CLogUtil::error("error!");