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 =
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 使用(一)的更多相关文章
- log4qt的使用
Log4Qt替换成新版本使其支持Qt5:https://github.com/devbean/log4qt/tree/master/src/log4qt 1. 解压log4qt到目标文件夹,如D:\Q ...
- Log4Qt使用(三)在DailyRollingFileAppender类中增加属性mMaxBackupIndex
在Log4Qt中存在一个比较大的问题,当使用 DailyRollingFileAppender对日志进行输出时,会无限输出文件,也就是说,当系统运行很久时,日志文件有可能很大,大到无法想象.因此,很多 ...
- Log4Qt 使用(二)
本文基于上一篇<Log4Qt 使用(一)>来继续完善一下关于Log4Qt的使用. 在讲解之前,我们首先来看一个例子: int main(int argc, char *argv[]) { ...
- 收藏的博客 -- Qt/C++学习
Qt Creator环境: 使用Qt Creator作为Linux IDE,代替Vim:实现两台Linux电脑远程部署和调试(一台电脑有桌面系统,一台电脑无桌面系统) 使用Qt Creator作为Li ...
- QT入门学习笔记2:QT例程
转至:http://blog.51cto.com/9291927/2138876 Qt开发学习教程 一.Qt开发基础学习教程 本部分博客主要根据狄泰学院唐老师的<QT实验分析教程>创作,同 ...
随机推荐
- Mysql数据数据[字节、长度、数据范围]一览表
1.mysql有哪些数据类型: 主要包括以下五大类: 整数类型:BIT.BOOL.TINY INT.SMALL INT.MEDIUM INT. INT. BIG INT 浮点数类型:FLOAT.DOU ...
- SQL从入门到基础 - 01 数据库开发及ADO.Net
一.数据库概述 1. 用自定义文件格式保存数据的劣势:并发性差,查找数据的速度差. 2. DBMS(DataBase Management System数据库管理系统)和数据库.平时谈到“数据库”的含 ...
- An attempt to attach an auto-named database for file
在用VS自带的 .mdf读取(joint)时,报错: Server Error in '/' Application. An attempt to attach an auto-named datab ...
- static和const关键字的作用
static关键字至少有下列n个作用: (1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值: (2)在模块内的stat ...
- impdp/expdp 总结
impdp/expdp 1.创建DIRECTORY create directory dir_dp as '/tmp'; --建议将DIRECTORY 建在 /tmp 表下面,该目录肯定存 ...
- Oracle 11g安装攻略
Oracle 11g安装攻略 本攻略是以Win7-32位系统中安装Oracle 11g为示例,安装前大家需要确认以下几点: 你的内存足够大且没有问题,因为Oracle非常吃内存. 你的系统已经激活. ...
- JS之对象数组遍历?
一.js实现遍历对象 <script> ","destroy":"97%"}; var props = ""; for ...
- 递归目录的shell脚本
#! /bin/sh # 在其他目录运行时一定要加上这样的语句 # 尤其是配置在crontab里自动运行 cd `` #定义数据别名 alias statdb="/usr/local/mys ...
- SwitchySharp怎样设置 ( proxy switch!的设置与使用方法)
规则列表URL https://autoproxy-G{过}F{滤}Wlist.googlecode.com/svn/trunk/G{过}F{滤}Wlist.txt 注:不同的代{过}{滤}理 相 ...
- 『安全工具』Nessus多功能扫描器
0x 00 前言 写这篇博客,证明我还活着…… 0x 01 安装Nessus 直接官网 www.tenable.com/products/nessus/select-your-operating- ...