Qt利用qDebug输出信息到文件
程序员文章站
2022-03-31 11:13:55
...
1.dlog.h
#ifndef DLOG_H
#define DLOG_H
#include <qapplication.h>
#include <QDateTime>
#include <QFile>
#include <QTextStream>
#include <QtMsgHandler>
#include <QMessageLogContext>
#include <QMutex>
void myMsgOutput(QtMsgType type, const QMessageLogContext &context, const QString& msg)
{
static QMutex mutex;
mutex.lock();
QString time=QDateTime::currentDateTime().toString(QString("[ yyyy-MM-dd HH:mm:ss:zzz ]"));
QString mmsg;
switch(type)
{
case QtDebugMsg:
mmsg=QString("%1: Debug:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));
break;
case QtInfoMsg:
mmsg=QString("%1: Info:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));
break;
case QtWarningMsg:
mmsg=QString("%1: Warning:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));
break;
case QtCriticalMsg:
mmsg=QString("%1: Critical:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));
break;
case QtFatalMsg:
mmsg=QString("%1: Fatal:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg).arg(QString(context.file)).arg(context.line).arg(QString(context.function));
abort();
}
QFile file("debug.txt");
file.open(QIODevice::ReadWrite | QIODevice::Append);
QTextStream stream(&file);
stream << mmsg << "\r\n";
file.flush();
file.close();
mutex.unlock();
}
#endif // DLOG_H
2.main.cpp
#include "tool/dlog.h"
qInstallMessageHandler(myMsgOutput);
3.pro文件
DEFINES += QT_MESSAGELOGCONTEXT
4.qmake重新编译 上一篇: Qt-将QDebug信息保存到文件中
下一篇: PLY的LALR语法详细解释