C++/Qt生成Log.txt文件,使用Qt封装的回调函数qInstallMessageHandler
//**具体实现**
#ifndef MYMESSAGEOUTPUT_HPP
#define MYMESSAGEOUTPUT_HPP
#include <QtWidgets/QApplication>
#include < QtDebug >
#include < QFile >
#include < QTextStream >
#include <QDateTime>
void myMessageOutput(QtMsgType type, const QMessageLogContext& context, const QString& msg)
{
QByteArray localMsg = msg.toLocal8Bit();
QString strMsg("");
switch (type)
{
case QtDebugMsg:
strMsg = QString("Debug:");
break;
case QtWarningMsg:
strMsg = QString("Warning:");
break;
case QtCriticalMsg:
strMsg = QString("Critical:");
break;
case QtFatalMsg:
strMsg = QString("Fatal:");
break;
}
// 设置输出信息格式
QString strDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ddd");
//保存信息:类型、消息、文件、行数、函数
QString strMessage = QString("Type:%1 Message:%2 File:%3 Line:%4 Function:%5 DateTime:%6")
.arg(strMsg.toLatin1().constData()).arg(localMsg.constData()).arg(context.file).arg(context.line).arg(context.function).arg(strDateTime);
// 输出信息至文件中(读写、追加形式)
QFile file("Log.txt");
file.open(QIODevice::ReadWrite | QIODevice::Append);
QTextStream stream(&file);
stream << strMessage << "\r\n";
file.flush();
file.close();
}
//**main函数调用**
int main(int argc, char *argv[])
{
qInstallMessageHandler(myMessageOutput);// 日志文件
QApplication a(argc, argv);
a.exec();
return 0;
}
#endif // !MYMESSAGEOUTPUT_HPP