日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qt日志实现

發(fā)布時間:2023/11/29 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt日志实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
qt的日志有四個級別:
??? qDebug:?? ?調(diào)試信息
??? qWarning:?? ?警告信息
??? qCritical:?? ?嚴(yán)重錯誤
??? qFatal:?? ?致命錯誤
可以通過<QtGlobal>下的
?? ?void?? ?qCritical ( const char * msg, ... );
?? ?void?? ?qDebug ( const char * msg, ... );
?? ?void?? ?qFatal ( const char * msg, ... );
?? ?void?? ?qWarning ( const char * msg, ... );
或include <QtDebug>時,采用更便捷輸出
?? ?qDebug()<<"debug";
?? ?qWarning()<<"warning";
?? ?qCritical()<<"critical";
在程序調(diào)試中這樣的line printf輸出沒問題,如果app被部署后需要將這些輸出的日志輸出到日志文件中,需通過
QtMsgHandler qInstallMsgHandler ( QtMsgHandler handler )設(shè)置輸出,如果想取消輸出可通過qInstallMsgHandler(0)設(shè)置

qt日志輸出示例:
void logMsgHandler(QtMsgType type, const char *msg)
{
??? QString strLog;
??? switch (type) {
??????? case QtDebugMsg:
??????????? strLog = QString(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ")+"[Debug] %1").arg(QObject::tr(msg));
??????????? break;
??????? case QtWarningMsg:
??????????? strLog = QString(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ")+"[Warn] %1").arg(QObject::tr(msg));
??????????? break;
??????? case QtCriticalMsg:
??????????? strLog = QString(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ")+"[Critical] %1").arg(QObject::tr(msg));
??????????? break;
??????? case QtFatalMsg:
??????????? strLog = QString(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ")+"[Fatal] %1").arg(QObject::tr(msg));
??????????? // abort();
??????? default:
??????????? break;
??? }
??? //更復(fù)雜的寫入文件按實際需求設(shè)置
??? QFile outFile("debug.log");
??? outFile.open(QIODevice::WriteOnly | QIODevice::Append);

??? /**< the max size of log.txt.*/
??? if(outFile.size()>10000)
??? {
??????? outFile.close();
?? ??? ?//清空舊日志
??????? outFile.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Truncate);
??????? outFile.close();
??????? outFile.open(QIODevice::WriteOnly | QIODevice::Append);
??? }

??? QTextStream ts(&outFile);
??? ts << strLog << endl;
};
#include <QDebug>
?int main(int argc, char **argv)
?{
???? qInstallMsgHandler(myMessageOutput);
???? QApplication app(argc, argv);
??? //打印日志到文件中
??? qDebug("debug");
??? qWarning("warning");
??? qCritical("critical");
??? qFatal("fatal");
?? ?
?? ?qDebug()<<"debug_";
?? ?qWarning()<<"warning_";
?? ?qCritical()<<"critical_";
?? ?
???? return app.exec();
?}

總結(jié)

以上是生活随笔為你收集整理的qt日志实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。