问题:

QT 框架输出日志到文件中,以便跟踪代码的执行。

方案:

利用qInfo() 、qDebug()、qWarning()、qCritical()、qFatal()及回调函数实现。

具体代码:

步骤一:写回调函数

void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)

{

// 这一段是将中文的二进制还原为中文

QStringList s;
QRegExp exp("\\u[0-9A-F]{4,}");
int nPos = exp.indexIn(msg,0);
while(nPos != -1)
{
s.append(exp.cap(0).mid(1));
nPos += exp.matchedLength();
nPos = exp.indexIn(msg, nPos);
}

QString strLocal;
foreach (const QString &t, s) 
{
QString str = t.toUShort(0,16);
strLocal.append(t.toUShort(0,16));
}

QString strMsg;

switch (type) {
case QtDebugMsg:
//fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtInfoMsg:
//fprintf(stdout, "Info: %s (%s:%u, %s)\n", msg.toLocal8Bit().constData(), context.file, context.line, context.function);
strMsg = QString::fromLocal8Bit("%1 %2 .....(%3:%4, %5)\n").arg(QDateTime::currentDateTime().toString("yyyyMMdd HH:mm:ss,zzz")).arg(strLocal).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);
break;
case QtCriticalMsg:
//fprintf(stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
break;
case QtFatalMsg:
//fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
abort();

}

// strDir 代表的具体路径

QString strDir;

QFile file(strDir + "/info(Server).txt");

file.open(QIODevice::WriteOnly | QIODevice::Append);
QTextStream stderrStream;
stderrStream.setDevice(&file);
stderrStream<<strMsg;

}

步骤二:在main 函数中需要注册回调函数

int main(int argc, char *argv[])
{

qInstallMessageHandler(myMessageOutput);

......

}

步骤三:代码中使用示例

qInfo() << QString::fromLocal8Bit("启动监控服务...");

QT 简单的写日志功能相关推荐

  1. linux c 日志写入文件,linux下C语言实现写日志功能

    先上程序,该程序经过测试能够很好的实现写日志要求 /************************************************************************* ...

  2. QT 简单仿写QQ界面

    因为要写一个跨平台内网传输工具DKD,为了最大程度的代码复用,所以考虑使用QT,对QT不熟悉,10天的摸索,终于画出简易的仿QQ界面,开发环境为:qt creator+gcc,效果如下: 主窗口的区域 ...

  3. 开源纯C日志函数库iLOG3快速入门(五、与随手写的简单写日志函数的比较)

    2019独角兽企业重金招聘Python工程师标准>>> 前几天看到一个网友的评论:"这种一般自己实现个用用就行了 没必要整第三方库". 的确,很多个人或公司都自己 ...

  4. 关于Quartz.NET作业调度框架的一点小小的封装,实现伪AOP写LOG功能

    Quartz.NET是一个非常强大的作业调度框架,适用于各种定时执行的业务处理等,类似于WINDOWS自带的任务计划程序,其中运用Cron表达式来实现各种定时触发条件是我认为最为惊喜的地方. Quar ...

  5. C++中关于写日志文件Log的方法

    目前已经有了很成熟的开源写日志Log的系统,功能也很完善,但是使用起来也比较麻烦.像我有时候只需要一点点小功能,那就不需要费那么大劲儿了.所以我自己弄了一个小函数来实现最最简单的写日志Log的功能,只 ...

  6. vs2010中写日志文件的几种方法

    windows系统日志中记录了系统中硬件.软件和系统问题的相关信息,同时可监控系统中发生的事件.因此当系统崩溃导致一些异常现象发生时可通过系统日志来找出错误发生的原因.那么对于应用软件来说,如果也提供 ...

  7. 简单的分级别写日志程序

    /************************************************************************/ /* * 文件名称:write_log.cpp * ...

  8. 实现Qt日志功能并输出到文件

    文章目录 实现Qt日志功能并输出到文件 一.基本分类: 二.如何截获这些信息 三.将qDebug()\qWarning()\qCritical()\qFatal() 信息输出到指定文件中 四.改写cu ...

  9. 轻轻松松教你写日志-超级简单

    近期在做一个项目.涉及到非常多的服务,一步步调试相当麻烦,要在自己电脑上公布非常多服务,又要所有开启.非常费时间.出现故障,怎么解决最快呢?直接写日志,一步定位哪里出了错. Log4Net库是一个帮助 ...

最新文章

  1. 【OpenCV 】Sobel 导数/Laplace 算子/Canny 边缘检测
  2. java学生背景知识要求,好好学习Java并发 一、背景知识
  3. 用python随机画多个圆_Python Pygame随机绘制不重叠的圆圈
  4. 5、HIVE DML操作、load数据、update、Delete、Merge、where语句、基于分区的查询、HAVING子句、LIMIT子句、Group By语法、Hive 的Join操作等
  5. 十七、二分查找法(java)
  6. java 声波 噪音过滤_攻略||让噪音一边去的隔音材料全解析!
  7. python最大迭代次数_python scipy eigs:无论收敛容差如何,在最大迭代次数后返回特征向量...
  8. 客户端VS2010 Team Foundation Server中删除项目
  9. redhat enterprise linux5.4.iso,版本有RedHat Enterprise Linux(RHEL)5.4/5.5/5.8/6.0/6.3 ISO镜像文件下载地址...
  10. leecode---40---数组,dfs---求所有的组合为target,有重复数组
  11. 什么是集群负载均衡与高可用(有图详解)
  12. 翁恺老师的细胞自动机
  13. 不清楚Word如何批量转PDF?快来跟我学这两个妙招
  14. 网页游戏外挂资料(转)
  15. 公共数据库挖掘第一步-GEO数据库下载表达谱数据和生存数据
  16. 为什么游戏模型不如原画好看?
  17. 《linux多线程服务端编程》---- C++基础前奏
  18. 程序员面试常见的10个问题,非常实用的面试技巧,收藏一下
  19. 浅谈webGl vr全景模式
  20. 基于LabVIEW和USRP的文本传输

热门文章

  1. Micro-Outlier Removal: 一种Kaggle快速提分的小技巧
  2. 音视频学习(十一)——H265视频码流
  3. Cache写机制:Write-through与Write-back
  4. python生成测试报告HTMLTestRunner时报错ValueError: write to closed file的解决办法
  5. 基于51单片机的免超载长途车自动控制系统proteus仿真
  6. dedecms标签大全(非常经典)
  7. 应届毕业生应该如何写简历?
  8. 网络工程师必备console线介绍
  9. 联想ERP项目实施案例分析(1):项目背景
  10. ExtScreen,为智能电视和VR设备打造的快应用引擎