当前位置: 首页 > news >正文

Qt将打印信息输出到文件

将打印信息(qDebug、qInfo、qWarning、qCritial等)输出到指定文件来以实现简单的日志功能。

#include "mainwindow.h"
#include <QApplication>
#include <QLoggingCategory>
#include <QMutex>
#include <QDateTime>
#include <QDir>
#include <QFileInfo>
QString logDirName = "log";
QMutex mutex;
void logInit();
void message(QtMsgType type, const QMessageLogContext &context, const QString &msg);
int main(int argc, char *argv[])
{logInit();QApplication a(argc, argv);qDebug()<<"aaaa";MainWindow w;w.show();return a.exec();
}void logInit()
{QDir dir(logDirName);// 不存在log目录就先创建if (!dir.exists()) QDir().mkdir(logDirName);// 遍历日志目录所有日志文件,然后删除十天前的日志文件QFileInfoList logList = dir.entryInfoList({"*.txt"}, QDir::Files, QDir::Time);foreach (const QFileInfo &info, logList) {if (info.created().daysTo(QDateTime::currentDateTime()) > 10) dir.remove(info.fileName());}QLoggingCategory::setFilterRules("*.info=true\n");qInstallMessageHandler(message);
}void message(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{mutex.lock();QString text = QString();switch (type) {case QtDebugMsg:text = "Debug";break;case QtWarningMsg:text = "Warning";break;case QtCriticalMsg:text = "Critical";break;case QtInfoMsg:text = "Info";break;case QtFatalMsg:text = "Fatal";break;default:break;}QString log= QString("[%1:%2:%3:%4]%5:%6").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz")).arg(context.file).arg(context.function).arg(context.line).arg(text).arg(msg);static QString path = QDir::cleanPath(logDirName+QDir::separator()+QDateTime::currentDateTime().toString("yyyyMMdd-hhmmsszzz")+QString("LOG.txt"));QFile file(path);if (file.open(QIODevice::WriteOnly|QIODevice::Append)) {QTextStream stream(&file);stream<<log<<endl;file.flush();file.close();}mutex.unlock();
}

该项目内所有打印信息将会输出到指定文件,比如在主界面mainwindow中点击按钮印一句d

void MainWindow::on_pushButton_clicked()
{qDebug()<<"11111";
}

程序运行后,不停点击按钮,可以看到有生成对应文件

相关文章:

Qt将打印信息输出到文件

将打印信息&#xff08;qDebug、qInfo、qWarning、qCritial等&#xff09;输出到指定文件来以实现简单的日志功能。 #include "mainwindow.h" #include <QApplication> #include <QLoggingCategory> #include <QMutex> #include <QDateTime>…...

【risc-v】易灵思efinix FPGA sapphire_soc IP配置参数分享

系列文章目录 分享一些fpga内使用riscv软核的经验&#xff0c;共大家参考。后续内容比较多&#xff0c;会做成一个系列。 本系列会覆盖以下FPGA厂商 易灵思 efinix 赛灵思 xilinx 阿尔特拉 Altera 本文内容隶属于【易灵思efinix】系列。 前言 在efinix fpga中使用riscv是一…...

直播的种类及类型

随着网络技术和移动设备的普及&#xff0c;直播已经成为人们娱乐、学习、商业交流等众多领域的重要工具。 直播的种类主要有以下几种: 1.视频直播:这是最常见的直播形式&#xff0c;包括电商直播、婚庆直播、培训直播、家居直播等。 2.图文直播:这种直播形式包括PPT互动直播…...

时间序列数据压缩算法简述

本文简单介绍了时间序列压缩任务的来源&#xff0c;压缩算法的分类&#xff0c;并对常见压缩算法的优缺点进行了简介&#xff0c;爱码士们快来一探究竟呀&#xff01; 引言 时间序列数据是在许多应用程序和领域中生成的一种基本数据类型&#xff0c;例如金融、医疗保健、交通和…...

智能锁-SI522TORC522方案资料

南京中科微这款SI522目前完全PinTOPin兼容的NXP&#xff1a;RC522、CV520 复旦微&#xff1a;FM17520、FM17522/FM17550 瑞盟&#xff1a;MS520、MS522 国民技术:NZ3801、NZ3802 SI522 是应用于13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员。是NXP 公司针对&quo…...

redux(4) -RTK简单使用

简单使用 1、下载 npm i reduxjs/toolkit react-redux 2、创建 1、在redux/user.js中创建模块user。从reduxjs/toolkit中引入createSlice创建模块片段&#xff0c;我们需要传入name、初始数据initialState、改state的reducers等。最后需要导出reducer和action。 代码如下&a…...

开源运维监控系统-Nightingale(夜莺)应用实践(未完)

一、前言 某业务系统因OS改造,原先的Zabbix监控系统推倒后未重建,本来计划用外部企业内其他监控系统接入,后又通知需要自建才能对接,考虑之前zabbix的一些不便,本次计划采用一个类Prometheus的监控系统,镜调研后发现Nightingale兼容Prometheus,又有一些其他功能增强,又…...

深入理解GMP模型

1、GMP模型的设计思想 1&#xff09;、GMP模型 GMP分别代表&#xff1a; G&#xff1a;goroutine&#xff0c;Go协程&#xff0c;是参与调度与执行的最小单位M&#xff1a;machine&#xff0c;系统级线程P&#xff1a;processor&#xff0c;包含了运行goroutine的资源&#…...

数学建模-基于集成学习的共享单车异常检测的研究

基于集成学习的共享单车异常检测的研究 整体求解过程概述(摘要) 近年来&#xff0c;共享单车的快速发展在方便了人们出行的同时&#xff0c;也对城市交通产生了一定的负面影响&#xff0c;其主要原因为单车资源配置的不合理。本文通过建立单车租赁数量的预测模型和异常检测模型…...

C语言-内存分配

内存分配 1. 引入 int nums[10] {0}; //对int len 10; int nums[len] {0}; //错是因为系统的内存分配原则导致的2. 概述 在程序运行时&#xff0c;系统为了 更好的管理进程中的内存&#xff0c;所以有了 内存分配机制。 分配原则&#xff1a; 2.1 静态分配 静态分配原…...

算法工程师-机器学习面试题总结(1)

目录 1-1 损失函数是什么&#xff0c;如何定义合理的损失函数&#xff1f; 1-2 回归模型和分类模型常用损失函数有哪些&#xff1f;各有什么优缺点 1-3 什么是结构误差和经验误差&#xff1f;训练模型的时候如何判断已经达到最优&#xff1f; 1-4 模型的“泛化”能力是指&a…...

【蓝桥杯选拔赛真题73】Scratch烟花特效 少儿编程scratch图形化编程 蓝桥杯创意编程选拔赛真题解析

目录 scratch烟花特效 一、题目要求 编程实现 二、案例分析 1、角色分析...

Juniper EX系列交换机端口配置操作

配置物理端口参数 userhost#set interface ge-slot/pic/port decription description #配置端口描述 userhost#set interface ge-slot/pic/port mtu mtu-number #配置端口MTU userhost#set interface ge-slot/pic/port ether-options speed (10m | 100m | 1g) #配置端口速率…...

2.1 Linux C 编程

一、Hello World 1、在用户根目录下创建一个C_Program&#xff0c;并在这里面创建3.1文件夹来保存Hellow World程序&#xff1b; 2、安装最新版nvim ①sudo apt-get install ninja-build gettext cmake unzip curl ②sudo apt install lua5.1 ③git clone https://github.…...

服务器数据恢复—ocfs2文件系统被格式化为其他文件系统如何恢复数据?

服务器故障&#xff1a; 由于工作人员的误操作&#xff0c;将Ext4文件系统误装入到存储中Ocfs2文件系统数据卷上&#xff0c;导致原Ocfs2文件系统被格式化为Ext4文件系统。 由于Ext4文件系统每隔几百兆就会写入文件系统的原始信息&#xff0c;原Ocfs2文件系统数据会遭受一定程度…...

海云安参与制定《信息安全技术 移动互联网应用程序(App)软件开发工具包(SDK)安全要求》标准正式发布

近日&#xff0c;由TC260&#xff08;全国信息安全标准化技术委员会&#xff09;归口 &#xff0c;主管部门为国家标准化管理委员会&#xff0c;深圳海云安网络安全技术有限公司&#xff08;以下简称“海云安”&#xff09;等多家相关企事业单位共同参与编制的GB/T 43435-2023《…...

如何调用 API | 学习笔记

开发者学堂课程【阿里云 API 网关使用教程:如何调用 API】学习笔记&#xff0c;与课程紧密联系&#xff0c;让用户快速学习知识。 课程地址&#xff1a;阿里云登录 - 欢迎登录阿里云&#xff0c;安全稳定的云计算服务平台 如何调用 API 调用 API 的三要素 要调用 API 需要三…...

关于云备份项目的HTTP协议字段理解

200状态码 给客户端返回该文件全部内容的响应 304状态码 206状态码 和If-Ranage请求头字段搭配使用&#xff0c;...

掉落的俄罗斯方块

欢迎来到程序小院 掉落的俄罗斯方块 玩法&#xff1a;上键 W↑变换、 左键 A← 左移、右键 D→ 右移、下键S ↓ 加速,两种模式&#xff0c; 可以一个大人玩&#xff0c;也可以两个人一起玩&#xff0c;小鸟经过会撞走方块&#xff0c;快去体验吧^^。开始游戏 html <div idc…...

医院不良事件报告系统源码带鱼骨图分析

医院不良事件上报系统通过 “事前的人员知识培训管理和制度落地促进”、“事中的事件上报和跟进处理”、 以及 “事后的原因分析和工作持续优化”&#xff0c;结合预存上百套已正在使用的模板&#xff0c;帮助医院从对护理事件、药品事件、医疗器械事件、医院感染事件、输血事件…...

AI编程助手集成DRPC技能包:无缝查询区块链数据的实践指南

1. 项目概述&#xff1a;为AI编程助手解锁区块链数据能力 如果你正在使用Claude Code、Cursor这类AI编程助手&#xff0c;并且需要频繁查询区块链上的数据——比如检查钱包余额、追踪交易状态、读取智能合约信息&#xff0c;那么你很可能已经厌倦了在代码编辑器和区块链浏览器之…...

终极NDS游戏资源编辑器Tinke:免费开源工具轻松提取和修改任天堂DS游戏文件

终极NDS游戏资源编辑器Tinke&#xff1a;免费开源工具轻松提取和修改任天堂DS游戏文件 【免费下载链接】tinke Viewer and editor for files of NDS games 项目地址: https://gitcode.com/gh_mirrors/ti/tinke 你是否曾经好奇任天堂DS游戏内部包含了哪些精美的图像、动听…...

管 Vibe Coding 项目,就像管公共厕所

本文整理自"AI炼金术"播客对徐文浩的访谈&#xff0c;探讨 AI 辅助编程&#xff08;Vibe Coding&#xff09;在组织落地后面临的治理挑战和应对策略。从"屎山三年一遇"到"屎山月月有"传统软件开发中&#xff0c;一个系统的"屎山化"通常…...

CMOS闩锁效应原理与防护设计实践

1. 闩锁效应基础原理剖析闩锁效应(Latch-up)是CMOS集成电路设计中最为棘手的可靠性问题之一。这种现象本质上是由芯片内部寄生形成的PNP-NPN晶体管对构成的晶闸管结构(SCR)被意外触发导致的。当特定条件满足时&#xff0c;这些寄生元件会形成正反馈回路&#xff0c;导致电源与地…...

Codepack:标准化开发配置与自动化工具链的工程实践

1. 项目概述&#xff1a;一个为开发者准备的“代码行囊” 最近在GitHub上闲逛&#xff0c;发现了一个挺有意思的项目&#xff0c;叫 JasonLovesDoggo/codepack 。乍一看名字&#xff0c;你可能会觉得这又是一个普通的代码库或者工具集。但点进去仔细研究后&#xff0c;我发现…...

Harbor:统一管理MCP服务器的配置中心与团队协作平台

1. 项目概述&#xff1a;一个统一管理MCP服务器的“港口” 如果你和我一样&#xff0c;每天都在Claude Code、Cursor、VS Code这几个编辑器之间来回切换&#xff0c;同时还要折腾一堆MCP服务器&#xff0c;那你肯定也经历过这种痛苦&#xff1a;在 ~/.claude.json 里加一个配…...

对比使用Taotoken前后,个人开发者的月度AI调用成本变化

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比使用Taotoken前后&#xff0c;个人开发者的月度AI调用成本变化 在原型开发与日常编码辅助中&#xff0c;频繁调用大模型API已成…...

基于Ollama与Stable Diffusion的Discord AI机器人本地部署指南

1. 项目概述&#xff1a;一个能聊能画的Discord AI机器人 最近在折腾一个挺有意思的玩意儿&#xff1a;一个部署在自己电脑上的Discord机器人&#xff0c;它不仅能像ChatGPT一样跟你聊天&#xff0c;还能根据你的描述生成图片。这个项目的核心&#xff0c;是把两个当下很火的开…...

为OpenClaw智能体工作流配置持久化的大模型服务支持

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为OpenClaw智能体工作流配置持久化的大模型服务支持 在构建基于OpenClaw的智能体工作流时&#xff0c;一个稳定、可靠的后端大模型…...

阵列天线方向图综合算法与应用【附代码】

✨ 长期致力于方向图综合算法、交替投影迭代、交替方向乘子法、子阵方向图综合、相控阵系统、软件设计研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09…...