一、下载

  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 =
LOG4QT_VERSION_MINOR =
LOG4QT_VERSION_RELEASE = 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. 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 ;
}

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

Log4Qt 使用(一)的更多相关文章

  1. log4qt的使用

    Log4Qt替换成新版本使其支持Qt5:https://github.com/devbean/log4qt/tree/master/src/log4qt 1. 解压log4qt到目标文件夹,如D:\Q ...

  2. Log4Qt使用(三)在DailyRollingFileAppender类中增加属性mMaxBackupIndex

    在Log4Qt中存在一个比较大的问题,当使用 DailyRollingFileAppender对日志进行输出时,会无限输出文件,也就是说,当系统运行很久时,日志文件有可能很大,大到无法想象.因此,很多 ...

  3. Log4Qt 使用(二)

    本文基于上一篇<Log4Qt 使用(一)>来继续完善一下关于Log4Qt的使用. 在讲解之前,我们首先来看一个例子: int main(int argc, char *argv[]) { ...

  4. 收藏的博客 -- Qt/C++学习

    Qt Creator环境: 使用Qt Creator作为Linux IDE,代替Vim:实现两台Linux电脑远程部署和调试(一台电脑有桌面系统,一台电脑无桌面系统) 使用Qt Creator作为Li ...

  5. QT入门学习笔记2:QT例程

    转至:http://blog.51cto.com/9291927/2138876 Qt开发学习教程 一.Qt开发基础学习教程 本部分博客主要根据狄泰学院唐老师的<QT实验分析教程>创作,同 ...

随机推荐

  1. oracle查询blob类型

    下午要查询一个数据,要求是从 表t_report 中查找出 mainbody字段中包含“hibernate”字符串的所有信息.而mainbody字段是blob类型.百度后终于找到答案: DBMS_LO ...

  2. linux内核学习之进程管理------task_struct结构体

    struct task_struct { volatile long state;    /* -1 unrunnable, 0 runnable, >0 stopped */ struct t ...

  3. 洛谷 P1305 新二叉树

    P1305 新二叉树 题目描述 输入一串完全二叉树,用遍历前序打出. 输入输出格式 输入格式: 第一行为二叉树的节点数n. 后面n行,每一个字母为节点,后两个字母分别为其左右儿子. 空节点用*表示 输 ...

  4. STL 之 vector 用法

    一.头文件 #include<vector> 二.常用方法: // 在这个向量的尾部插入x的考贝,平均时间为常数,最坏时间为O(n): 1: void push_back(const T& ...

  5. Ubuntu小私房(4)--Linux系统目录结构

    Linux目录结构是Linux学习者必须了解的知识,Linux的目录与Windows又有很大的不同,所以搞清楚Linux目录结构是关键. Linux文件类型 (部分转自ChinaBytel) linu ...

  6. 《javascript权威指南》读书笔记 -part2

    我真的很佩服副院长~他是一个很有耐心 极其细致的人 工作态度严谨  代码简洁风格统一~再乱遭遭的代码只要经过他的手就会变的很漂亮 羡煞我也~ 不说废话了  还是乖乖看书吧~maybe可能也许的某一天 ...

  7. mysql 获取当前日期及格式化

    MYSQL 获取当前日期及日期格式获取系统日期: NOW()格式化日期: DATE_FORMAT(date, format)注: date:时间字段format:日期格式 返回系统日期,输出 2009 ...

  8. Linux系统挂载点与分区的关系(转载)

    计算机中存放信息的主要的存储设备就是硬盘,但是硬盘不能直接使用,必须对硬盘进行分割,分割成的一块一块的硬盘区域就是磁盘分区.在传统的磁盘管理中,将一个硬盘分为两大类分区:主分区和扩展分区.主分区是能够 ...

  9. TimeZone 时区 (JS .NET JSON MYSQL)

    来源参考 : http://www.cnblogs.com/qiuyi21/archive/2008/03/04/1089456.html 来源参考 : http://walkingice.blogs ...

  10. JVM虚拟机栈和本地方法栈溢出测试

    弄JAVA,那JVM,JAVA语法,JDK库,JAVAEE,流行框架是一个都不能少,才可以有全局感的. JVM高级特性这书,看得差不多了.慢慢实践. /** * * *VM Args: -Xms20m ...