log4cplus 在VS与Qt的基础使用

版权声明:----------------------------未经博主允许, 随意转载---------------------------- 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


—–

  1. 准备工作:

—— 下载: 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
四个目录下

分别对应如下四种编译方式:
这里写图片描述



  1. 使用

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;
}

猜你喜欢

转载自blog.csdn.net/yulinxx/article/details/78744944