#include <QStyleFactory>
#include <QDateTime>
#include <iostream>
#include <QFile>
#include <QTextStream>
#include <QDebug>
using namespace std;
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
void customMessageHandler(QtMsgType type, const QMessageLogContext &, const QString &str) {
const QString &txt = str;
#else
void customMessageHandler(QtMsgType type, const char *msg)
{
QString txt(msg);
#endif
//输出到控制台
QDateTime now = QDateTime::currentDateTime();
QString _time = now.toString("yyyy-MM-dd hh:mm:ss.zzz");
QString fileName = now.toString("yyyy-MM-dd") + "debug.log";
QFile outFile(fileName);
outFile.open(QIODevice::WriteOnly | QIODevice::Append);
QTextStream ts(&outFile);
ts.setCodec("UTF-8");
ts.setGenerateByteOrderMark(false);
ts << _time << " " << txt << endl;
outFile.close();
//enum QtMsgType { QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtInfoMsg, QtSystemMsg = QtCriticalMsg };
switch (type) {
case QtDebugMsg:
cout << _time.toLatin1().data() << " Debug " << txt.toLocal8Bit().data() << endl;
break;
case QtWarningMsg:
cout << _time.toLatin1().data() << " Warning " << txt.toLocal8Bit().data() << endl;
break;
case QtCriticalMsg:
cout << _time.toLatin1().data() << " Critical " << txt.toLocal8Bit().data() << endl;
break;
case QtFatalMsg:
cout << _time.toLatin1().data() << " Fatal " << txt.toLocal8Bit().data() << endl;
break;
case QtInfoMsg:
cout << _time.toLatin1().data() << " Info " << txt.toLocal8Bit().data() << endl;
break;
}
}
main函数进行注册
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
qInstallMessageHandler(customMessageHandler);
#else
qInstallMsgHandler(customMessageHandler);
#endif