一、基本分类:
qDebug : 调试信息提示
qWarning: 一般的警告提示
qCritical: 严重错误提示
qFatal: 致命错误提示
二、如何截获这些信息
Qt提供了qInstallMsgHandler 方法用来定制消息发生后如何来处理。
qInstallMsgHandler 是一个回调函数,主要是由qDebug、qWarnng、qCritical、qFatal这些函数进行触发,
也就是说,qDeubg这些函数处理的消息文本会被qInstallMsgHandler 所指向的回调函数截获,这样就允许用户自己来处理这些消息文本。
例如,你完全可以将这些消息文本输出并保存到相关的日志文件中。请看下面的示例!
三、将qDebug()\qWarning()\qCritical()\qFatal() 信息输出到指定文件中
#include <QtDebug> #include <QFile> #include <QTextStream> void customMessageHandler(QtMsgType type, const char *msg) { QString txt; switch (type) { //调试信息提示 case QtDebugMsg: txt = QString("Debug: %1").arg(msg); break; //一般的warning提示 case QtWarningMsg: txt = QString("Warning: %1").arg(msg); break; //严重错误提示 case QtCriticalMsg: txt = QString("Critical: %1").arg(msg); break; //致命错误提示 case QtFatalMsg: txt = QString("Fatal: %1").arg(msg); abort(); } QFile outFile("debuglog.txt"); outFile.open(QIODevice::WriteOnly | QIODevice::Append); QTextStream ts(&outFile); ts << txt << endl; }
int main( int argc, char * argv[] ) { QApplication app( argc, argv ); //先注册自己的MsgHandler qInstallMsgHandler(customMessageHandler); //以后就可以像下面这样直接打日志到文件中,而且日志也会包含时间信息 qDebug("This is a debug message at thisisqt.com"); qWarning("This is a warning message at thisisqt.com"); qCritical("This is a critical message at thisisqt.com"); qFatal("This is a fatal message at thisisqt.com"); return app.exec(); }