qt的日志有四個級別:
??? qDebug:?? ?調試信息
??? qWarning:?? ?警告信息
??? qCritical:?? ?嚴重錯誤
??? 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";
在程序調試中這樣的line printf輸出沒問題,如果app被部署后需要將這些輸出的日志輸出到日志文件中,需通過
QtMsgHandler qInstallMsgHandler ( QtMsgHandler handler )設置輸出,如果想取消輸出可通過qInstallMsgHandler(0)設置
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;
??? }
??? //更復雜的寫入文件按實際需求設置
??? 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();
?}
??? qDebug:?? ?調試信息
??? qWarning:?? ?警告信息
??? qCritical:?? ?嚴重錯誤
??? 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";
在程序調試中這樣的line printf輸出沒問題,如果app被部署后需要將這些輸出的日志輸出到日志文件中,需通過
QtMsgHandler qInstallMsgHandler ( QtMsgHandler handler )設置輸出,如果想取消輸出可通過qInstallMsgHandler(0)設置
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;
??? }
??? //更復雜的寫入文件按實際需求設置
??? 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();
?}