zoukankan      html  css  js  c++  java
  • Log4Qt 使用(一)

    一、下载

      http://sourceforge.net/projects/log4qt/develop

    二、Log4Qt介绍

      Log4Qt 是Apache Log4J 的Qt移植版,所以看Log4J的资料应该是最直接有效的(因为Log4Qt的直接资料太少了)。

      Log4Qt主要是用来记录日志(有助于程序调试)。有3个主要的组件:

      Logger
    提供日志记录服务,可以有多个Logger存在,每个有它们自己的名字。Logger间存在隶属关系,有一个Logger称为根Logger。
      Appender
    用来指明将日志记录到什么地方:比如,控制台、文件、数据库,等等
      Layout
    控制日志的输出格式,可以类比一下C中的printf哈。

    三、使用Log4Qt

      由于程序中包含很多动态库,而几乎每个动态库都需要使用log功能,此时直接包含Log4Qt的源码或者使用静态库都不是太好的注意。所以:使用动态库

      其实只要写好工程文件,使用动态库也很简单:

      3.1 创建Qt工程,命名为libLog4Qt

      3.2 在项目根目录下新建文件夹3rdparty,并把下载的源代码中的放置在里面。

      3.3 编辑libLog4Qt.pro内容如下:

      目的:构建一个动态库

    TEMPLATE = lib
    CONFIG += log4qt-buildlib
    QT += core xml network
    
    include(liblog4qt.pri)
    TARGET = $$LIBLOG4QT_NAME
    DESTDIR = $$PROJECT_LIBDIR
    win32{
        DLLDESTDIR = $$PROJECT_BINDIR
        QMAKE_DISTCLEAN += $$PROJECT_BINDIR/$${LIBLOG4QT_NAME}.dll
    }
    CONFIG += debug_and_release build_all
    
    LOG4QT_VERSION_MAJOR = 1
    LOG4QT_VERSION_MINOR = 0
    LOG4QT_VERSION_RELEASE = 0
    
    LOG4QT_VERSION = '\"$${LOG4QT_VERSION_MAJOR}.$${LOG4QT_VERSION_MINOR}.$${LOG4QT_VERSION_RELEASE}\"'
    DEFINES += LOG4QT_VERSION_STR="$${LOG4QT_VERSION}"
    DEFINES += LOG4QT_VERSION=$${LOG4QT_VERSION}
    
    VERSION = 1.0.0
    
    DEPENDPATH += src src/helpers src/spisrc/ varia
    INCLUDEPATH += src src/helpers src/spi src/varia

      3.4 在以上创建的工程根目录下创建文档 libLog4Qt.pri

      编辑 libLog4Qt.pri如下:

      一开始定义几个变量:

    • 我们下载的 log4qt 所放置的目录
    • 我们的库文件准备放置到的路径(所有的动态库都需要这个,放置到单独一个common.pri中更好)
    • 库文件的名字(使用了qtLibraryTarget,这样在windows下debug和release自动拥有不同的名字,而且对我们是透明的,因为我们只在这一个文件内指定库文件的名字。)
    LOG4QTSRCPATH = $$PWD/3rdparty/log4qt/src/log4qt
    PROJECT_LIBDIR = $$PWD/lib
    PROJECT_BINDIR = $$PWD/bin
    
    TEMPLATE += fakelib
    LIBLOG4QT_NAME = $$qtLibraryTarget(hlog4qt)
    TEMPLATE -= fakelib
    
    INCLUDEPATH += $$LOG4QTSRCPATH
    DEPENDPATH += $$LOG4QTSRCPATH
    
    !log4qt-buildlib{
        DEFINES += LOG4QT_IMPORTS
        LIBS +=  -L$$PROJECT_LIBDIR  -l$$LIBLOG4QT_NAME
    }else{
        DEFINES += LOG4QT_EXPORTS
        INCLUDEPATH += -L$$PROJECT_LIBDIR $$LOG4QTSRCPATH/helpers 
                       $$LOG4QTSRCPATH/spi 
                       $$LOG4QTSRCPATH/varia
        DEPENDPATH += $$LOG4QTSRCPATH/helpers 
                       $$LOG4QTSRCPATH/spi 
                       $$LOG4QTSRCPATH/varia
        include($$LOG4QTSRCPATH/Log4Qt.pri)
    }

    创建libLog4Qt.pro

    用来构建动态库

    可以单独存在,也可以被上级的pro文件所包含(通过subdir)

    创建libLog4Qt.pri

    用来构建和使用动态库

    任何需要使用log工程的pro文件,只需要include该文件即可

      3.5 编译项目,我们可以在lib目录下看到四个文件:

      libhlog4qt.so   libhlog4qt.so.1     libhlog4qt.so.1.0      libhlog4qt.so.1.0.0

      这表明我们已经成功构建来关于Log4Qt的动态库了。

      下面,我们就可以使用上面生成的动态库。

      3.6 我们在新项目中使用以上动态库需要做的事情:

      在.pro中加入:

    LIBS += -L$$PWD/3rdParty/lib/ -lhlog4qt
    
    INCLUDEPATH += $$PWD/3rdParty
    DEPENDPATH += $$PWD/3rdParty

      并在使用前包含头文件和使用log:

      

    #include "logger.h"
    #include "basicconfigurator.h"
    
    
    
    
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        Log4Qt::BasicConfigurator::configure();
        Log4Qt::Logger * log = Log4Qt::Logger::rootLogger();
        log->debug("Hello DbZhang800!");
        log->info("Hello Qt!");
        log->warn("Hello 1+1=2");
        return 0;
    }

    至此,我们已可以成功使用Log4Qt了。

  • 相关阅读:
    1、编写一个简单的C++程序
    96. Unique Binary Search Trees
    python 操作redis
    json.loads的一个很有意思的现象
    No changes detected
    leetcode 127 wordladder
    django uwsgi websocket踩坑
    you need to build uWSGI with SSL support to use the websocket handshake api function !!!
    pyinstaller 出现str error
    数据库的读现象
  • 原文地址:https://www.cnblogs.com/wiessharling/p/3712578.html
Copyright © 2011-2022 走看看