QtApplets-Log4QtDemo-1

190 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 头图

QtApplets-Log4QtDemo

今天撸一下Log4Qt版本的日志系统,今天目的就是能用就行。


QtApplets-Log4QtDemo1 获取源代码2 如何使用2.1 包含模块文件2.2 main函数初始化2.3 编写测试3 最终结果☞ 源码

关键字: log4QtQtlog4日志Demo

1 获取源代码

这里直接百度就好。

官方网站,有人说官网的版本很老了

GitHub加速一下

2 如何使用

既然有源码了,那肯定是可以有多种方式使用了

  • 直接使用源码
  • 把源码编译成动态库使用

2.1 包含模块文件

今天我是使用的就是直接使用源代码,直接在Pro文件中添加include(./log4qt/log4qt.pri),如下图所示,我现在就成为是添加子模块吧,

pri文件具体是啥。看里面文件内容,应该就是把log4qt的包含文件打了一个包,不用我们一个的包含了。 有其他发现再说。

 # *******************************************************************************
 #
 # package:     Log4Qt
 # file:        log4qt.pri
 # created:     September 2007
 # author:      Martin Heinrich
 #
 # 
 # Copyright 2007 Martin Heinrich
 # 
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 # 
 #     http://www.apache.org/licenses/LICENSE-2.0
 # 
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
 # 
 # *******************************************************************************
 ​
 INCLUDEPATH += $$PWD/..
 DEPENDPATH += $$PWD/..
 HEADERS += \
     $$PWD/appender.h \
     $$PWD/appenderskeleton.h \
     $$PWD/basicconfigurator.h \
     $$PWD/consoleappender.h \
     $$PWD/dailyrollingfileappender.h \
     $$PWD/fileappender.h \
     $$PWD/helpers/classlogger.h \
     $$PWD/helpers/configuratorhelper.h \
     $$PWD/helpers/datetime.h \
     $$PWD/helpers/factory.h \
     $$PWD/helpers/initialisationhelper.h \
     $$PWD/helpers/logerror.h \
     $$PWD/helpers/logobject.h \
     $$PWD/helpers/logobjectptr.h \
     $$PWD/helpers/optionconverter.h \
     $$PWD/helpers/patternformatter.h \
     $$PWD/helpers/properties.h \
     $$PWD/hierarchy.h \
     $$PWD/layout.h \
     $$PWD/level.h \
     $$PWD/log4qt.h \
     $$PWD/logger.h \
     $$PWD/loggerrepository.h \
     $$PWD/loggingevent.h \
     $$PWD/logmanager.h \
     $$PWD/mdc.h \
     $$PWD/ndc.h \
     $$PWD/patternlayout.h \
     $$PWD/propertyconfigurator.h \
     $$PWD/rollingfileappender.h \
     $$PWD/simplelayout.h \
     $$PWD/spi/filter.h \
     $$PWD/ttcclayout.h \
     $$PWD/writerappender.h \
     $$PWD/varia/debugappender.h \
     $$PWD/varia/denyallfilter.h \
     $$PWD/varia/nullappender.h \
     $$PWD/varia/levelmatchfilter.h \
     $$PWD/varia/levelrangefilter.h \
     $$PWD/varia/listappender.h \
     $$PWD/varia/stringmatchfilter.h
     
 SOURCES += \
     $$PWD/appenderskeleton.cpp \
     $$PWD/basicconfigurator.cpp \
     $$PWD/consoleappender.cpp \
     $$PWD/dailyrollingfileappender.cpp \
     $$PWD/fileappender.cpp \
     $$PWD/helpers/classlogger.cpp \
     $$PWD/helpers/configuratorhelper.cpp \
     $$PWD/helpers/datetime.cpp \
     $$PWD/helpers/factory.cpp \
     $$PWD/helpers/initialisationhelper.cpp \
     $$PWD/helpers/logerror.cpp \
     $$PWD/helpers/logobject.cpp \
     $$PWD/helpers/logobjectptr.cpp \
     $$PWD/helpers/optionconverter.cpp \
     $$PWD/helpers/patternformatter.cpp \
     $$PWD/helpers/properties.cpp \
     $$PWD/hierarchy.cpp \    
     $$PWD/layout.cpp \
     $$PWD/level.cpp \
     $$PWD/log4qt.cpp \
     $$PWD/logger.cpp \
     $$PWD/loggerrepository.cpp \
     $$PWD/loggingevent.cpp \
     $$PWD/logmanager.cpp \
     $$PWD/mdc.cpp \
     $$PWD/ndc.cpp \
     $$PWD/patternlayout.cpp \
     $$PWD/propertyconfigurator.cpp \
     $$PWD/rollingfileappender.cpp \
     $$PWD/simplelayout.cpp \
     $$PWD/spi/filter.cpp \
     $$PWD/ttcclayout.cpp \    
     $$PWD/writerappender.cpp \
     $$PWD/varia/debugappender.cpp \
     $$PWD/varia/denyallfilter.cpp \
     $$PWD/varia/nullappender.cpp \
     $$PWD/varia/levelmatchfilter.cpp \
     $$PWD/varia/levelrangefilter.cpp \
     $$PWD/varia/listappender.cpp \
     $$PWD/varia/stringmatchfilter.cpp
     

2.2 main函数初始化

在main文件中给日志模块添加配置,并设置消息获取为true;如下

2.3 编写测试

接着就是消息测试,分别测试调试信息qDebug,警告信息qWarning 错误信息qCritical和致命错误qFaltal,在界面上生成4个按钮,分别对应四种消息测试,如下

在对应槽函数里面调用消息接口,如下

 /**
  * @brief Widget::on_pushButton_Qdebug_clicked
  * 调试信息测试
  */
 void Widget::on_pushButton_Qdebug_clicked()
 {
     qDebug() << "qDebug Testing";
 }
 ​
 /**
  * @brief Widget::on_pushButton_Qwarning_clicked
  * 一般警告测试
  */
 void Widget::on_pushButton_Qwarning_clicked()
 {
     qWarning() << "qWarning Testing";
 }
 ​
 /**
  * @brief Widget::on_pushButton_QCritical_clicked
  * 严重错误测试
  */
 void Widget::on_pushButton_QCritical_clicked()
 {
     qCritical() << "qCritical Testing";
 }
 ​
 /**
  * @brief Widget::on_pushButton_QFatal_clicked
  * 致命错误测试
  */
 void Widget::on_pushButton_QFatal_clicked()
 {
     qFatal("qFatall Testing");
 }

3 最终结果

最终的效果如下:其实如果仅仅是简单的日志记录,还可以自己下一个简单的日志,下一篇我们将尝试自己实现一个日志记录。尽请期待。

☞ 源码

源码链接:GitHub仓库自取

使用方法:☟☟☟