- 一、QsLog基本介绍
- 二、QsLog的使用方法
- 2.1 方法一——在Mingw编译器中的编译和使用
- 2.2 方法二——在Visual Studio编译器中的使用
- 三、项目基本配置
- 四、UI界面设计
- 五、主程序实现
- 5.1 widget.h
- 5.2 widget.cpp
- 六、效果演示
- 七、拓展
上一篇文章Qt第三方日志库QsLog基本语法介绍介绍了一下日志库QsLog的基本语法,本文将介绍一下QsLog的基本配置和使用。配合上文一起食用效果更佳哟~
一、QsLog基本介绍qslog的下载地址:https://github.com/victronenergy/QsLog。
QsLog是一个基于Qt的QDebug类的易于使用的记录器。QsLog是在麻省理工学院许可下以开源形式发布的。
QsLog的特征:
- 六个日志级别(从跟踪到致命);
- 运行时可配置的日志级别阈值;
- 关闭日志记录时的最小开销;
- 支持多个目标,附带文件和调试目标;
- 线程安全
- 支持现成的常见Qt类型的日志记录;
- 小依赖:直接把它放到你的项目中。
打开QsLog.pri项目,进行编译: 编译完成后,在工程源码目录中,会出现build-QsLogShared文件夹。
进入该文件夹,将libQsLog2.a和QsLog2.dll复制出来,移动到新建项目的文件夹中。
同时将QsLog-master中的头文件也移出来,放入到新建项目相应的文件夹中。
内容如下:
其中bin目录下存放libQsLog2.a和QsLog2.dll。include目录下存放相应的.h头文件。
然后将dll文件放在exe所在目录下。
编译步骤相同,只是利用Visual Studio进行编译,生成的是QsLog2.dll和QsLog2.lib(而mingw编译器生成的是Qslog2.dll和QsLog2.a)。
三、项目基本配置新建一个Qt案例,项目名称为“qslogTest”,基类选择“QWidget”,取消选中创建UI界面复选框,完成项目创建。
在pro文件中添加相应的头文件和lib库文件:
INCLUDEPATH += include/QsLog.h \
include/QsLogDest.h \
include/QsLogDestConsole.h \
include/QsLogDestFile.h \
include/QsLogDestFunctor.h \
include/QsLogDisableForThisFile.h \
include/QsLogLevel.h
LIBS += $$PWD/QsLog/bin/libQsLog2.a
四、UI界面设计
ui界面如下: 界面内为一个QTextBrowser。
头文件中声明两个函数和一个槽函数:
public:
void initLogger();
void destroyLogger();
public slots:
void logSlot(const QString &message, int level);
5.2 widget.cpp
首先定义相应的头文件和使用命名空间:
#include"QsLog/include/QsLog.h"
#include"QsLog/include/QsLogDest.h"
using namespace QsLogging;
在构造函数中进行初始化,析构函数中进行销毁:
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
initLogger(); //初始化日志
}
Widget::~Widget()
{
delete ui;
destroyLogger();//销毁日志
}
初始化函数:
void Widget::initLogger()
{
// 1. 启动日志记录机制
Logger& logger = Logger::instance();
logger.setLoggingLevel(QsLogging::TraceLevel);
//设置log位置为exe所在目录
const QString sLogPath(QDir(QCoreApplication::applicationDirPath()).filePath("log.txt"));
// 2. 添加两个destination
DestinationPtr fileDestination(DestinationFactory::MakeFileDestination(
sLogPath, EnableLogRotation, MaxSizeBytes(512), MaxOldLogCount(2)));
DestinationPtr debugDestination(DestinationFactory::MakeDebugOutputDestination());
//DestinationPtr functorDestination(DestinationFactory::MakeFunctorDestination(&logFunction));
//这样和槽函数连接
DestinationPtr sigsSlotDestination(DestinationFactory::MakeFunctorDestination(this, SLOT(logSlot(QString,int))));
logger.addDestination(debugDestination);
logger.addDestination(fileDestination);
//logger.addDestination(functorDestination);
logger.addDestination(sigsSlotDestination);
// 3. 开始日志记录
QLOG_INFO()
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?