【Qt】qDebug()调试信息保存至txt日志文件
来源:互联网 发布:项羽彭城之战 知乎 编辑:程序博客网 时间:2024/04/24 11:47
开发环境:Win10 Qt5.7.0 VisualStudio2015
核心:qInstallMessageHandler函数
官方文档:http://doc.qt.io/qt-5/qtglobal.html#qInstallMessageHandler
Qt可将qDebug()输出的信息(其他信息),进行额外处理
最常见的用法,是将输出信息保存到txt文本文件中,可做发布后日志功能
范例(在Release模式下,qDebug()输出的调试信息保存至软件根目录下*.lgt文件中)
#include <QApplication>#include <iostream>#include <cstdlib>#include <QFile>#include <QString>#include <QTextStream>#include <QMutex>#include <QDateTime>using namespace std;QMutex mutex;//日志代码互斥锁QString timePoint;//日志生成void LogMsgOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) { mutex.lock(); cout << msg.toStdString() << endl; //Critical Resource of Code QByteArray localMsg = msg.toLocal8Bit(); QString log; switch (type) { case QtDebugMsg: //fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function); log.append(QString("Debug File:%1 %2 Line:%3 Content:%4").arg(context.file).arg(context.function).arg(context.line).arg(msg)); break; case QtInfoMsg: //fprintf(stderr, "Info: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function); log.append(QString("Info: %1 %2 %3 %4").arg(localMsg.constData()).arg(context.file).arg(context.line).arg(context.function)); break; case QtWarningMsg: //fprintf(stderr, "Warning: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function); log.append(QString("Warning: %1 %2 %3 %4").arg(localMsg.constData()).arg(context.file).arg(context.line).arg(context.function)); break; case QtCriticalMsg: //fprintf(stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function); log.append(QString("Critical: %1 %2 %3 %4").arg(localMsg.constData()).arg(context.file).arg(context.line).arg(context.function)); break; case QtFatalMsg: //fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function); log.append(QString("Fatal: %1 %2 %3 %4").arg(localMsg.constData()).arg(context.file).arg(context.line).arg(context.function)); abort(); } QFile file; QString path = QString("log%1.lgt").arg(timePoint); file.setFileName(path); if (!file.open(QIODevice::ReadWrite | QIODevice::Append)) { QString erinfo = file.errorString(); cout << erinfo.toStdString() << endl; return; } QTextStream out(&file); out << "\n\r" << log; file.close(); mutex.unlock(); }int main(int argc, char *argv[]){//release模式下,调试信息输出至日志文件#ifndef _DEBUGtimePoint = QDateTime::currentDateTime().toString("yyyyMMddHHmmss");qInstallMessageHandler(LogMsgOutput);#endif QApplication a(argc, argv); Widget w; w.show(); return a.exec();}
0 0
- 【Qt】qDebug()调试信息保存至txt日志文件
- Qt-将QDebug信息保存到文件中
- qt 屏蔽qDebug调试信息
- Qt 定制qDebug() 信息到log文件
- QDebug 输出调试信息
- qt中如何用qDebug输出彩色调试信息
- Qt调试信息分类和qDebug()导出到文…
- qt中如果用qDebug输出彩色调试信息
- qt中如何用qDebug输出彩色调试信息
- Qt txt文件打开保存
- Qt笔记_调试qDebug
- 屏蔽qDebug等调试信息
- QT中调试信息输出到日志文件
- Qt 调试信息,输出日志
- Qt输出日志信息到txt
- Qt实现数据文本保存TXT文件
- Window下Qt中用qDebug()输出调试信息到Console控制台的设置方法
- Window下Qt中用qDebug()输出调试信息到Console控制台的设置方法
- -bash: sftp: command not found
- 曲线斜率与法向量综合辨析
- 没GPU也能玩梵高作画:Ubuntu tensorflow CPU版
- OpenCV中读取图像像素值
- 利用mvn deploy命令上传包
- 【Qt】qDebug()调试信息保存至txt日志文件
- Eclipse导入项目出现Select at least one project怎么办
- 第七周项目一(顺序环形队列算法库)
- 第七周项目6-停车场模拟
- Highcharts AJAX JSON JQuery 实现动态数据交互显示图表
- 过滤器filter
- 第七周项目5-——排队看病模拟
- JS学习干货(一)-数据类型和变量
- Java的自学之路-构造方法 的作用以及与set方法的区别