将qDebug()信息重定向到文件中.

#include <QCoreApplication>
#include <QDateTime>
#include <QFile>
#include <QMutex>
#include <QString>
#include <QTextStream>
#include <cstdlib>
#include <iostream>
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 CodeQByteArray 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);
#endifQCoreApplication a(argc, argv);    qDebug("this is a test");return a.exec();
}

参考:

  1. qdebug release和debug的不同实现

将qDebug()信息重定向到文件中相关推荐

  1. 详解printf重定向到文件中,打印日志的实现

    printf是将信息打印到终端,但是有时当我们需要打印的信息比较多时,终端无法将所有信息都能够保留在屏幕上,这样我们就不能在终端获取我们想要的信息了,重定向很好的帮我们解决了这个问题,下面我就通过重定 ...

  2. 将Linux脚本中的正常输出,警告,错误等信息输出到文件中

    将Linux脚本中的正常输出,警告,错误等信息输出到文件中 转载于:https://www.cnblogs.com/lwmp/p/7700339.html

  3. java文件保存异常_Java 实现把异常信息写入到文件中

    示例代码如下: import java.io.File; import java.io.FileNotFoundException; import java.io.PrintStream; publi ...

  4. 将Linux下编译的warning警告信息输出到文件中

    Linux中,脚本语言环境中,即你用make xxx即其他一些普通 linux 命令,比如ls,find等,不同的数字,代表不同的含义:  数字 含义 标准叫法 0 标准输入 stdin = stan ...

  5. Python:监控键盘输入、鼠标操作,并将捕获到的信息记录到文件中

    Python:监控键盘输入.鼠标操作,并将捕获到的信息记录到文件中 - Socrates的专栏 - 博客频道 - CSDN.NET Python:监控键盘输入.鼠标操作,并将捕获到的信息记录到文件中 ...

  6. python使用logging打印信息到日志文件中

    python使用logging打印信息到日志文件中 参考 Python输出日志信息 Python + logging 输出到屏幕,将log日志写入文件 使用logging打印日志到文件中的目的是: 解 ...

  7. 报错笔记:linux 命令行中的print输出内容无法重定向到文件中

    在命令行上跑一个python程序(执行时间很长),如果将输出直接重定向到命令行上,是会有输出的 但是如果我们将其重定向到一个文件中,可能很久都没有输出 原因在于python是有缓存输出的,所以不能暂时 ...

  8. 编译时,输出信息重定向到文件

    例如: make > /home/t.txt 2>&1 表示把输出的信息.错误信息等都放到t.txt文件中 win和linux都通用. 转载于:https://www.cnblog ...

  9. linux将日期和日历信息追加到文件中_Linux任务调度

    crontab 任务调度 crontab 进行定时任务的设置 概述 任务调度:是指系统在某个时间执行的特定的命令或程序. 任务调度分类: 1.系统工作:有些重要的工作必须周而复始地执行,如病毒扫描等 ...

最新文章

  1. python获取系统时间月份_python 取数组绝对值python获取当前日期
  2. python 排列组合之itertools
  3. 短学期实训——第二篇
  4. C# 多种方式发送邮件(附帮助类)
  5. 库克宣布苹果将捐款帮助山西
  6. C语言丨栈(二):链栈
  7. 通过Shiny app实现疫苗预防疾病的过程
  8. db2的jdbc驱动
  9. maya中英文对比_[转载]maya中英文对照
  10. Vue使用debugger
  11. 静态HTML+CSS 中国高等教育学生信息网(学信网)网站
  12. JavaWeb-JSON
  13. JS 正则表达式 数字和小数点 非负数 保留两位小数点
  14. 【论文阅读】2022年最新迁移学习综述笔注(Transferability in Deep Learning: A Survey)
  15. linux基础——信号阻塞及未决信号
  16. 多个路由器无线桥接,共享网络
  17. 面向对象与面向过程编程
  18. Linux 网络基础(二)---传输层
  19. iOS下WebRTC音视频通话(一)
  20. Linux个性化桌面,颜值即正义,超好用的 Linux 桌面个性化工具推荐

热门文章

  1. 针对UI设计面试,你应注意的几个细节!
  2. IDEA EasyApi导出接口到Yapi返回的数据格式未解析问题
  3. Unity 【Wheel Collider】实现游戏中的车具控制
  4. Android视频播放之边缓存边播放
  5. CSS盒子模型与背景图片
  6. js对对象按照值进行排序
  7. 大堂经理现场服务与营销技巧--孙甜老师西安
  8. java 随机数种子
  9. 软件算法设计与分析 期中复习
  10. 流沙解压密码_在流沙的基础上:总结