C加加下的日志库有很多,如log4cpp、Easylogging++等,Qt下也有log4qt。
不过我们今天要说的是QsLog,它是一个基于Qt的轻量级开源日志库。
git地址:https://github.com/victronenergy/QsLog
轻到什么程度,请看如下:
![afb63d53933d4e8508ee68b35c28a9db.png](https://img-blog.csdnimg.cn/img_convert/afb63d53933d4e8508ee68b35c28a9db.png)
代码文件就是这么点。花点时间阅读一下,秒改造成你自己的私有轮子。
虽然轻量级,但是对于基本的日志功能需求还是够用的。
特征
六个日志级别(从跟踪到致命)
运行时可配置的日志级别阈值。
关闭日志记录时的最小开销。
支持多个目标,附带文件和调试目标。
线程安全
支持现成的常见Qt类型的日志记录。
小依赖:直接把它放到你的项目中。
接下来,我们研究下它都有哪些功能。
一、QsLog使用方式
1. 源码集成
在你的工程中,直接包含QsLog.pri文件,进行源码集成。
当然你也可以包含QsLog.pri后,编译为xx.dll,在应用工程中去调用xx.dll。
2. 动态库集成
编译QsLogSharedLibrary.pro,生成动态链接库QsLog2.dll,在你的工程中进行调用。
二、日志级别
支持六个日志级别,优先级从低到高依次为:Trace、Debug、Info、Warn、Error、Fatal、Off。如下:
enum Level
{
TraceLevel = 0,
DebugLevel,
InfoLevel,
WarnLevel,
ErrorLevel,
FatalLevel,
OffLevel
};
Trace:跟踪,最低等级的,用于打开所有日志记录。
Debug:调试,打印一些细粒度调试运行信息。
Info:信息,打印粗粒度信息,突出强调程序的运行过程。打印一些感兴趣或者重要的信息,可用于环境中输出程序运行的一些重要信息,但不能滥用,避免打印过多日志。
Warn:警告,表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示。
Error:错误,指出虽然发生错误,但仍然不影响系统的继续运行。打印错误和异常信息。
Fatal:致命的,发生严重错误,将导致应用程序的退出。这个级别比较高,程序直接停止运行了。
Off:最高等级的,用于关闭所有日志记录。
可以通过setLoggingLevel()设置记录日志的级别。
void setLoggingLevel(Level newLevel)
注意:
一般我们可以将日志级别保存到配置文件,以便程序发布后,可通过修改配置来改变记录日志级别。
三、日志输出目的地
QsLog的使用很简单,在我们自己的工程中直接include它的QsLog.pri文件,然后源文件中包含QsLog.h就可以使用了。
1. 输出到文件(支持文件分割)
// 测试文件为目的地
void test_output_file(){
// 初始化日志机制
Log