版权声明:----------------------------未经博主允许, 随意转载---------------------------- https://blog.csdn.net/yulinxx/article/details/78744944
使用方法见:
http://blog.51cto.com/pyhcx/143549
开源日志系统log4cplus(一) - 笑笑小白 - 博客园 http://www.cnblogs.com/rosesmall/archive/2012/04/25/2469274.html
—–
- 准备工作:
—— 下载: log4cplus-1.2.1-rc2.7z
https://sourceforge.net/projects/log4cplus/ (Last Update: 2017-07-11)
—— 解压,
用VS2015打开
D:\code\Third\log4cplus-1.2.1-rc2\msvc10\log4cplus.sln
编译,
—— 生成的.lib .dll .exe 位于:
D:\code\Third\log4cplus-1.2.1-rc2\log4cplus-1.2.1-rc2\msvc10\Win32\
bin.Debug
bin.Debug_Unicode
bin.Release
bin.Release_Unicode
四个目录下
分别对应如下四种编译方式:
- 使用
2.1 VS Win32工程使用:
新建Win32工程,
//include .h file
#include <log4cplus/logger.h>
#include <log4cplus/fileappender.h>
#include <log4cplus/consoleappender.h>
#include <log4cplus/layout.h>
#include <log4cplus/loggingmacros.h>
using namespace log4cplus;
using namespace log4cplus::helpers;
// Link Lib
#ifndef _DEBUG
#pragma comment(lib,"log4cplusUS.lib")
#else
#pragma comment(lib,"log4cplusSD.lib")
#endif
int main()
{
// 定义一个控制台的Appender
SharedAppenderPtr pAppender(new RollingFileAppender(LOG4CPLUS_TEXT("D:/yulinxx.log")));
pAppender->setName(LOG4CPLUS_TEXT("yulinxx"));
// 定义一个简单的Layout,并绑定到Appender
std::auto_ptr<Layout> pSimpleLayout(new SimpleLayout());
//std::auto_ptr<Layout> pPatternLayout(new PatternLayout("%d{%y-%m-%d %H:%M:%S} - %m [%l]%n"));
std::auto_ptr<Layout> pPatternLayout(new PatternLayout(LOG4CPLUS_TEXT("%m %d{%Y-%m-%d %H:%M:%S:%q} %n")));
pAppender->setLayout(pPatternLayout);
// 定义Logger,并设置优先级
Logger pTestLogger = Logger::getInstance(LOG4CPLUS_TEXT("yulinxx"));
pTestLogger.setLogLevel(ALL_LOG_LEVEL);
// 将需要关联Logger的Appender添加到Logger上
pTestLogger.addAppender(pAppender);
// 输出日志信息
LOG4CPLUS_WARN(pTestLogger, "Hello, World!");
LOG4CPLUS_DEBUG(pTestLogger, "This is a DEBUG message");
LOG4CPLUS_INFO(pTestLogger, "This is a INFO message");
LOG4CPLUS_WARN(pTestLogger, "This is a WARN message");
LOG4CPLUS_ERROR(pTestLogger, "This is a ERROR message");
LOG4CPLUS_FATAL(pTestLogger, "This is a FATAL message");
return 0;
}
即可
————————-
2.2
Qt 需要使用 Unicode编译方式的lib,否则会链接不上
main.obj:-1: error: LNK2019: 无法解析的外部符号 “public: __thiscall log4cplus::PatternLayout::PatternLayout(class std::basic_string
#include "log4cplus/logger.h"
#include "log4cplus/fileappender.h"
#include "log4cplus/consoleappender.h"
#include "log4cplus/layout.h"
#include "log4cplus/loggingmacros.h"
using namespace log4cplus;
using namespace log4cplus::helpers;
#pragma comment(lib,"D:/lib/log4cplusUD.lib")
using namespace std;
using namespace log4cplus;
using namespace log4cplus::helpers;
#include <QDebug>
int main()
{
// 定义一个控制台的Appender
SharedAppenderPtr pAppender(new RollingFileAppender(LOG4CPLUS_TEXT("D:/yulinxx.log")));
pAppender->setName(LOG4CPLUS_TEXT("yulinxx"));
// 定义一个简单的Layout,并绑定到Appender
std::auto_ptr<Layout> pSimpleLayout(new SimpleLayout());
//std::auto_ptr<Layout> pPatternLayout(new PatternLayout("%d{%y-%m-%d %H:%M:%S} - %m [%l]%n"));
std::auto_ptr<Layout> pPatternLayout(new PatternLayout(LOG4CPLUS_TEXT("%m %d{%Y-%m-%d %H:%M:%S:%q} %n")));
pAppender->setLayout(pPatternLayout);
// 定义Logger,并设置优先级
Logger pTestLogger = Logger::getInstance(LOG4CPLUS_TEXT("sc_log"));
pTestLogger.setLogLevel(ALL_LOG_LEVEL);
// 将需要关联Logger的Appender添加到Logger上
pTestLogger.addAppender(pAppender);
// 输出日志信息
LOG4CPLUS_WARN(pTestLogger, "Hello, World!");
LOG4CPLUS_DEBUG(pTestLogger, "This is a DEBUG message");
LOG4CPLUS_INFO(pTestLogger, "This is a INFO message");
LOG4CPLUS_WARN(pTestLogger, "This is a WARN message");
LOG4CPLUS_ERROR(pTestLogger, "This is a ERROR message");
LOG4CPLUS_FATAL(pTestLogger, "This is a FATAL message");
return 0;
}