将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打包操作与在线发布
  2. 9.3 图像变换(尺寸变换、旋转变换、灰度变换和数据类型变换)
  3. 从烤箱到蒸烤箱、到蒸烤箱集成灶,功能做加法,价格做乘法
  4. [ZJOI2016]小星星
  5. linux 端口方法防火墙,Linux 打开端口方法(防火墙操作)
  6. 原创 通过PEB获得进程路径 (附完整工程)
  7. 转:android 避免内存泄露
  8. 新秀发挥云17号:RHEL改变以太网地址克隆虚拟机后,
  9. 关于“工作组管理员”
  10. Apache Mail 发送带附件的邮件
  11. DataGridView用法总结
  12. svn up 更新与回退
  13. 什么是微信WXID数据?
  14. 像模拟人生的 java游戏下载_我的世界1.7.2模拟人生整合包
  15. 60帧究级豪华观影体验!potplayer通过bluesky补帧!
  16. 数据技术篇之数据同步
  17. 一种基于优先级轮询调度负载均衡的crossbar结构
  18. 太赞了!图解SQL基础知识,菜鸟也能看懂的SQL文章!
  19. 信息传递(带权并查集求最小环
  20. vue基础,加少量的webpack,以及脚手架搭建vue项目

热门文章

  1. 一个优雅的的进销存管理系统,无需编写任何代码就能增加常规功能
  2. linux下在终端用ASCII实现偶像练习生-鲲鲲爱打球
  3. [学习opencv]高斯、中值、均值、双边滤波
  4. 基于部标JT808的车载视频监控需求与EasyCVR视频融合平台解决方案设计
  5. 三大需求助ROS成为百度自动驾驶车载计算框架
  6. win7在安装时跳过输入用户名界面,直接开启管理员用户
  7. leaf游戏服务器开发系列,Leaf游戏服务器简析(一)之模块生命周期
  8. golang leaf调试Game、Login模块收发信息
  9. 智能汽车「利好」数据服务,特斯拉/英伟达/大众都在布局
  10. 神州租车将迎来新的发展机遇