qt调试日志文件生成

系列文章目录

第一章 qt日志文件生成功能


文章目录

  • 系列文章目录
  • 前言
  • 一、qt日志文件生成功能
  • 二、使用步骤
    • 1.代码示例
    • 2.运行截图


前言

qt有固定的调试日志接口,可以通过终端去打印,但是仅适用在本地去调试,例如想长期放到测试台去检测, 可以采用生成日志文件的方式去监测.

关键字:日志文件


一、qt日志文件生成功能

枚举类型详情
qDebug调试信息
qInfo正常信息
qWarning警告信息
qCritical严重错误
qFatal致命错误

二、使用步骤

qt目录结构在这里插入图片描述

1.代码示例

代码如下(示例):

custommessagehandler.h

#ifndef CUSTOMMESSAGEHANDLER_H
#define CUSTOMMESSAGEHANDLER_H#include <QtCore>
class CustomMessageHandler
{
public:CustomMessageHandler();static void customMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg);
};#endif // CUSTOMMESSAGEHANDLER_H

custommessagehandler.cpp

#include <QFile>
#include <QTextStream>
#include <QDateTime>#include "custommessagehandler.h"CustomMessageHandler::CustomMessageHandler()
{}void CustomMessageHandler::customMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{// 打开文件,确保文件存在并具有写入权限//QFile file("D:/work/lmp/qtproject/untitled/logfile.txt");QFile file("logfile.txt");if (!file.open(QIODevice::Append | QIODevice::Text)) {return;}// 根据消息类型添加前缀QString text;switch (type) {case QtDebugMsg:text = QString("Debug: %1").arg(msg);break;case QtInfoMsg:text = QString("Info: %1").arg(msg);break;case QtWarningMsg:text = QString("Warning: %1").arg(msg);break;case QtCriticalMsg:text = QString("Critical: %1").arg(msg);break;case QtFatalMsg:text = QString("Fatal: %1").arg(msg);// 注意:QtFatalMsg 会导致应用程序终止,因此这里可能无法写入完整的消息break;default:text = msg;break;}// 写入文件并关闭QTextStream out(&file);out << QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz ") << text << endl;file.close();
}

main.cpp

#include "mainwindow.h"
#include <QApplication>
#include "custommessagehandler.h"
#include "QDebug"int main(int argc, char *argv[])
{QApplication a(argc, argv);// add code start// 安装自定义消息处理器qInstallMessageHandler(CustomMessageHandler::customMessageOutput);qInfo() << "Application started";//输出一般性信息,用于记录应用程序运行过程中的常规信息,帮助开发者了解程序执行流程。qDebug() << "Variable value ";//主要用于调试目的,输出详细的调试信息。qWarning() << "Invalid input detected, using default value";//输出警告信息,表示程序运行过程中出现了潜在的问题,但并没有阻止程序继续执行qCritical() << "Critical failure in network connection";//输出严重错误信息,强调程序发生了严重的、可能会导致程序异常或严重影响程序功能的情况,但程序仍然能够运行并可能有机会尝试恢复。// qFatal("Unrecoverable system error occurred");//输出致命错误信息,表示发生了非常严重、无法恢复的错误,通常这类错误会导致程序立即终止// ... 你的应用程序代码 ...//add code endMainWindow w;w.show();return a.exec();
}

2.运行截图

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MVCC-多版本并发控制

MVCC&#xff08;多版本并发控制&#xff09;简介 在数据库系统中&#xff0c;并发控制是一个非常重要的话题。为了提高系统的并发性能和吞吐量&#xff0c;现代数据库系统通常使用多种技术来实现对数据的安全访问&#xff0c;其中一种重要的技术就是多版本并发控制&#xff0…

springboot设置RestTemplate支持httphttps

1.添加HttpsClientRequestFactory public class HttpsClientRequestFactory extends SimpleClientHttpRequestFactory {Overrideprotected void prepareConnection(HttpURLConnection connection, String httpMethod) {try {if (!(connection instanceof HttpsURLConnection))…

如何给MySQL数据库的所有表统一加上字段

在开发过程中&#xff0c;有时候慢慢的建了很多数据库表&#xff0c;但是后来发现需要统一增加某些字段的时候&#xff0c;可以通过alter语句 ALTER TABLE 表名 ADD 列名 数据类型;比如我要给t_user表增加gmt_create与gmt_modified字段&#xff0c;用作记录新增记录时间与更新…

【机器人】PyBullet四足机器狗仿真

随着科技的迅猛发展&#xff0c;机器人技术正日益成为现实生活中的重要组成部分。而在机器人研究领域&#xff0c;仿真技术的应用扮演着不可或缺的角色。它不仅可以节约大量资源和成本&#xff0c;更为工程师和研究者提供了一个安全、高效的实验平台。在这个博客中&#xff0c;…

hanlp中文分词器(ing...)

目前的工作中需要对文本进行分词分析词性,找出热词,经过一系列的调研感觉hanlp这个库还不错,想先试用看看 介绍 HanLP&#xff08;Han Language Processing&#xff09;是一个由一系列模型与算法组成的NLP工具包&#xff0c;目标是普及自然语言处理在生产环境中的应用。HanLP…

工地安全监测识别摄像机

工地安全监测识别摄像机是一种在建筑工地和施工现场广泛使用的智能监控设备&#xff0c;主要用于监测施工过程中可能出现的安全隐患和违规行为&#xff0c;以确保工地人员和设备的安全。通过高清摄像头、智能算法和远程监控系统的结合&#xff0c;该摄像机可以实时监测工地各个…

node.js 中的require用法 和import的区别

node.js 中的require用法 在Node.js中&#xff0c;require是一个内置的函数&#xff0c;用于在当前模块中加载和缓存其他模块。这是Node.js模块系统的基础&#xff0c;允许你导入第三方库或其他模块文件。这里是一些基本用法和注意事项&#xff1a; 基本用法 导入核心模块&am…

【gitlab】修改默认存放存放目录

流程 共享文件路径是 /mnt/hgfs/project停掉gitlab gitlab-ctl stop修改gitlab的配置文件,找到 vim /etc/gitlab/gitlab.rb找到 git_data_dirs里面的path 换成共享文件路径 # git_data_dirs({ # "default" > { # "path" > "/mnt/hgfs/…

C#设计简单的WinForms多窗口应用程序[示例]

这个程序是一个简单的多窗口应用程序&#xff0c;使用了 Windows 窗体&#xff08;WinForms&#xff09;来创建用户界面。让我们逐步分析它的结构&#xff1a; 1. **命名空间&#xff08;Namespace&#xff09;&#xff1a;** 整个程序位于名为 MultiWindowApp 的命名空间中…

电商社交新零售:创新引领新趋势,变革新零售思维格局-亿发

新零售O2O模式是如何颠覆传统零售商业模式&#xff1f; 传统电商出现瓶颈&#xff1a; 传统电商在发展过程中逐渐出现了瓶颈&#xff0c;主要表现在市场竞争激烈、用户获取成本上升、用户黏性下降等问题。传统电商往往只能通过价格竞争或促销活动来吸引用户&#xff0c;而这种…

重构数据访问层-优化数据访问的开发

重新整理了一下过去开发的框架&#xff0c;在准备开发新项目时候&#xff0c;重新整理了一下思路&#xff0c;感觉数据访问层还是很鸡肋。过去几年中&#xff0c;急于完成项目开发和交付&#xff0c;框架都是迭代过来的&#xff0c;虽然满足了开发需求&#xff0c;但是&#xf…

软考118-上午题-【软件工程】-能力成熟度模型

一、考试题型 选择题&#xff08;13题&#xff09; 二、能力成熟度模型CMM 能力成熟度模型CMM的研究目的是&#xff1a;提供一种评价软件承接方能力的方法&#xff0c;同时它可帮助软件组织改进其软件过程。 CMM 将软件过程改进分为以下5个成熟度级别&#xff1a; 1、初始级…

二叉树的遍历——bfs广度优先搜索

1、BinNode类的创建 &#xff08;1&#xff09;代码总览 ##&#xff08;2&#xff09;测试示例 2、二叉树的遍历 &#xff08;1&#xff09;图示 &#xff08;2&#xff09;代码总览 &#xff08;3&#xff09;测试示例

ai智能电销机器人的核心技术,工作原理和作用

科技快速发展的同时&#xff0c;带来了人工智能产品的普及。而ai智能电销机器人则成为推进电销行业的产物&#xff0c;那么ai智能电销机器人是如何帮助企业高效触客&#xff0c;有效地工作&#xff0c;效果又如何呢&#xff1f;我们一起来看看吧&#xff01; 一、ai智能电销机器…

区块链与数字身份:探索Facebook的新尝试

在数字化时代&#xff0c;随着区块链技术的崛起&#xff0c;数字身份成为了一个备受关注的话题。作为全球最大的社交媒体平台之一&#xff0c;Facebook一直在探索如何利用区块链技术来改善数字身份管理和用户数据安全。本文将深入探讨Facebook在这一领域的新尝试&#xff0c;探…

二叉树的遍历的递归与非递归算法

一.二叉树的遍历&#xff1a; 按照一定规律对二叉树的每个结点进行访问且仅访问一次&#xff1b; 这里的访问&#xff1a;可以是计算二叉树中的结点数据&#xff0c;打印该结点的信息&#xff0c;也可以是对结点进行的任何其它操作&#xff01; 为什么需要遍历二叉树&#x…

精品PPT-数据治理总体解决方案新版(免费下载)

1、知识星球下载&#xff1a; 如需下载完整PPTX可编辑源文件&#xff0c;请前往星球获取&#xff1a;https://t.zsxq.com/19F4dDDrv 2、免费领取步骤&#xff1a; 【1】关注公众号 方案驿站 【2】私信发送 数据治理新版 【3】获取本方案PDF下载链接&#xff0c;直接下载即可…

spring.rabbitmq.listener.simple.default-requeue-rejected = false 和放入死信队列的区别

目录 一、场景 二、使用 spring.rabbitmq.listener.simple.default-requeue-rejected false 2.1 特点 三、 放入死信队列 四、两种区别 一、场景 当我们使用RabbitMq的时候&#xff0c;我们如果业务中有异常&#xff0c;很有可能造成死循环&#xff0c;因为 在RabbitMQ和…

转让名称带中国的金融控股集团公司要多少钱

随着公司的发展和市场竞争的影响&#xff0c;越来越多的创业者希望注册一家好名称的公司&#xff0c;以提高企业知名度和竞争力。但是&#xff0c;注册中字头无地域公司需要满足一定的条件和流程。本文将对中字头无地域公司注册条件及流程进行详细的介绍。可以致电咨询我或者来…

U2004A是德科技U2004A功率传感器

181/2461/8938产品概述&#xff1a; Keysight U2004A (Agilent) USB 功率传感器可快速设置和测量&#xff0c;无需功率计&#xff0c;只需将 USB 传感器电缆插入 PC&#xff0c;即可使用 FREE Power Panel (N1918A) 软件控制 USB 功率传感器。 Keysight U2004A USB 功率传感器…