Qt之qInstallMessageHandler(重定向至文件)
来源:互联网 发布:人工智能电影精彩影评 编辑:程序博客网 时间:2024/06/03 21:32
简述
在Qt之qInstallMessageHandler(输出详细日志)一节中,我们讲解了如何使用自定义消息处理程序输出调试信息,而且可以很直观、很方便的得到输出代码所在的文件、函数、行号等信息。
当软件发布的时候,通常都会采用日志输出功能,方便我们后期的跟踪、查找问题。
- 简述
- 自定义消息处理
- 效果
- 源码
- 更多参考
自定义消息处理
下面,我们来根据需要自定义消息处理程序。其中输出格式包含:输出信息、文件、函数、行号、日期时间。这样就很利于我们追踪了。
效果
源码
void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg){ // 加锁 static QMutex mutex; mutex.lock(); 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("Message:%1 File:%2 Line:%3 Function:%4 DateTime:%5") .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(); // 解锁 mutex.unlock();}int main(int argc, char **argv){ // 安装消息处理程序 qInstallMessageHandler(myMessageOutput); QApplication app(argc, argv); // 打印信息 qDebug("This is a debug message."); qWarning("This is a warning message."); qCritical("This is a critical message."); qFatal("This is a fatal message."); ... return app.exec();}
这里,使用QMutex进行加锁、解锁操作,便于我们可以安全的在多线程操作中使用。QFile打开模式为QIODevice::ReadWrite | QIODevice::Append
(读写、追加模式),保证了输出信息可以以追加的形式写入文件。
更多参考
- Qt之qInstallMessageHandler(输出详细日志)
2 0
- Qt之qInstallMessageHandler(重定向至文件)
- Qt之qInstallMessageHandler(实践)
- Qt之qInstallMessageHandler(输出详细日志)
- Qt之qInstallMessageHandler(输出详细日志)
- 《完美Qt》之qInstallMessageHandler
- QT之定向打开文件
- 文件重定向 fseek()
- Qt:重定向QDebug输出到文件,并附上日期
- Qt:重定向QDebug输出到文件,并附上日期
- QT QProcess 重定向问题
- 文件输入输出(非重定向)
- 文件重定向(hook IRP_MJ_CREATE)
- 重定向文件
- 重定向hosts文件
- shell 文件重定向
- 文件重定向总结
- 文件重定向
- 文件重定向
- swiper的基础使用(二十一)
- python break,pass,continue 循环语句
- ANR log分析
- 图片自动缩放,前台读富文本编辑器里图片用的
- PHP 漏洞与代码审计
- Qt之qInstallMessageHandler(重定向至文件)
- 解题报告:HDU_2333 Assemble 二分
- 使用MyEclipse构建MAVEN项目(非WEB项目)
- Test
- winpcap环境搭建Visual Studio 2010
- 阿里面经之解答 by cmershen(4)——线程池
- android Handler 用法
- angularjs踩过的那些坑
- hello world(android volley)