简述
说来惭愧,一直以来,我都是使用一个单例模式来完成日志模块,具体操作就是调用单例的写文件函数,自己编辑日志内容,记录在日志文件里。
这种做法不利于查找调试。而使用qt内置的qInstallMessageHandler函数,重新编辑调试函数的输出内容才是简单高效的做法。
调试级别
名字很高大上,其实大家都在使用的qDebug()就是。
qDebug() – 调试信息输出;
qInfo() – 信息消息;
qWarning() – 警告消息和可恢复的错误;
qCritical() – 关键错误和系统错误;
qFatal() – 致命错误。
一共有五类,用法和qDebug()一致。需要特别说明的只有qFatal(),每当程序执行到这句话时会自动报错并终止。
代码之路
一个工程项目会出现很多的调试信息和日志信息,供我们查找调试,如果能提供信息所在的文件、函数和行号,那就太方便了。
下面,我们就可以使用qt内置的qInstallMessageHandler函数在自定义消息处理,通过各调试级别的信息输出,直接输出到屏幕并记录到日志文件。
#include <QApplication>
#include <stdio.h>
#include <stdlib.h>
#include <QMutex>
#include <QFile>
#include <QTextStream>
#include <QDateTime>
QtMessageHandler gDefaultHandler = NULL;
//自定义