一.需求
商业项目开发中,大部分的程序都需要有个日志的输出功能,希望可以将程序的运行状态存储到文本文件或者数据库或者做其他处理,下面介绍几种QT中日志功能的实现方式。
二.QT中日志功能的实现方式
1.日志重定向输出
这种方式已经有人直接封装成了类,并做成了开源软件,直接下载可用,下载地址:https://gitcode.com/feiyangqingyun/QWidgetDemo/tree/master/control/savelog
qt对这个日志输出也做了很好的封装,在Qt4是qInstallMsgHandler,Qt5里边是qInstallMessageHandler,有了这个神器,只要在你的项目中所有qdebug qinfo等输出的日志信息,都会重定向接收到,
日志可以输出到文本文件,装入日志钩子以后,拿到了所有调试打印信息,可以用来存储到数据库+html有颜色区分格式的文件+网络转发输出(尤其适用于嵌入式linux无界面程序,现场不方便外接调试打印的设备)。
使用说明:https://gitee.com/feiyangqingyun/QWidgetDemo
主要功能:
支持动态启动和停止。
支持日志存储的目录。
支持网络发出打印日志。
支持Qt4+Qt5,开箱即用。
支持多线程。
使用做到最简单,start即可。
2.log4qt
log4qt是Apache的log4j的qt移植版本,log4j是在java下面使用的一个超强大的日志系统;
log4qt是一些大牛参考log4j整理的一套在C++上使用的日志系统,使用参考log4j的使用,log4qt是开源的,有多个版本源码,功能有所相等,实现也各不相同,有一些配置选项并没有实现,
需要自己修改源码,比如说设置输出等级,打印文件名、函数名、行号等信息。
首先log4qt是一个开源的源码,可以在官网进行下载源码:https://sourceforge.net/projects/log4qt/
3.QsLog
QsLog简单小巧,它是一个基于Qt的轻量级开源日志库。
下载地址:https://github.com/victronenergy/QsLog
功能特征:
六个日志级别(从跟踪到致命)
运行时可配置的日志级别阈值。
关闭日志记录时的最小开销。
支持多个目标,附带文件和调试目标。
线程安全。
支持现成的常见Qt类型的日志记录。
小依赖:直接把它放到你的项目中。
4.qclog
基于Qt5/C++的日志库,可输出彩色日志,高效、快速、易用、好看。
https://gitee.com/umatobu/qclog
三.总结
第一种方式最简单,要求不高用起来也很方便;第三种比较小巧方便,这两种方式之前都有用过,都还不错;
至于第二种就相对复杂,功能也应该较多,本人也没有实际用过,用过的同学可以评价一下;
第四种没有用过,但看了一下也比较小巧,有兴趣的人可以试一下;