// log4cppTest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <string>
#include <log4cxx/logger.h>
#include <log4cxx/propertyconfigurator.h>
#include <log4cxx/helpers/exception.h>
using namespace log4cxx;
using namespace log4cxx::helpers;
int main(int argc, char* argv[])
{
String msg = _T("e://log4cppTest//log4cxx.properties");
LoggerPtr rootLogger = Logger::getRootLogger();
log4cxx::PropertyConfigurator::configure(msg);
rootLogger->info(_T("Entering application."));
//LOG4CXX_INFO(rootLogger, _T("他的确工作了"));(0.9.7这句会有内存溢出)
return 0;
}
新建一个文本文件,命名为log4cxx.properties,并键入如下内容:
[code]
log4j.rootLogger=DEBUG, ca, fa
#对Appender fa进行设置:
# 这是一个文件类型的Appender,
# 其输出文件(File)为./output.log,
# 输出方式(Append)为覆盖方式,
# 输出格式(layout)为PatternLayout
log4j.appender.fa=org.apache.log4j.FileAppender
log4j.appender.fa.File=./output.log
log4j.appender.fa.Append=true
log4j.appender.fa.layout=org.apache.log4j.PatternLayout
log4j.appender.fa.layout.ConversionPattern=%d [%t] %-5p %.16c - %m%n
#对Appender ca进行设置:
# 这是一个控制台类型的Appender
# 输出格式(layout)为PatternLayout
log4j.appender.ca=org.apache.log4j.ConsoleAppender
log4j.appender.ca.layout=org.apache.log4j.PatternLayout
log4j.appender.ca.layout.ConversionPattern=%d [%t] %-5p %.16c - %m%n
[/code]
复制log4cxx.dll到输出目录。在动态链接方式下,应用程序需要能够找到这个库文件。
运行生成的文件,查看一下运行结果.
注:log4cxx在代码中含有一个漏洞,如果使用LOG4CXX.INFO(*)会造成内存溢出,但使用rootlogger->info(*)没有这个问题.
相关内容可以搜索关键字为"在C++中使用Apache Log4cxx日志服务"的文章.