《QT实用小工具·二十五》日志重定向输出

1、概述
源码放在文章末尾

日志重定向输出,包含如下功能:

  1. 支持动态启动和停止。
  2. 支持日志存储的目录。
  3. 支持网络发出打印日志。
  4. 支持输出日志上下文信息比如所在代码文件、行号、函数名等。
  5. 支持设置日志文件大小限制,超过则自动分文件,默认128kb。
  6. 支持按照日志行数自动分文件,和日志大小条件互斥。
  7. 可选按照日期时间区分文件名存储日志。
  8. 日志文件命名规则优先级:行数》大小》日期。
  9. 自动加锁支持多线程。
  10. 可以分别控制哪些类型的日志需要重定向输出。
  11. 支持Qt4+Qt5+Qt6,开箱即用。
  12. 使用方式最简单,调用函数start()启动服务,stop()停止服务。

下面是demo演示:
在这里插入图片描述

项目部分代码如下:

#ifndef SAVELOG_H
#define SAVELOG_H/*** 日志重定向输出* 1. 支持动态启动和停止。* 2. 支持日志存储的目录。* 3. 支持网络发出打印日志。* 4. 支持输出日志上下文信息比如所在代码文件、行号、函数名等。* 5. 支持设置日志文件大小限制,超过则自动分文件,默认128kb。* 6. 支持按照日志行数自动分文件,和日志大小条件互斥。* 7. 可选按照日期时间区分文件名存储日志。* 8. 日志文件命名规则优先级:行数》大小》日期。* 9. 自动加锁支持多线程。* 10. 可以分别控制哪些类型的日志需要重定向输出。* 11. 支持Qt4+Qt5+Qt6,开箱即用。* 12. 使用方式最简单,调用函数start()启动服务,stop()停止服务。*/#include <QObject>class QFile;
class QTcpSocket;
class QTcpServer;//消息类型
enum MsgType {MsgType_Debug = 0x0001,MsgType_Info = 0x0002,MsgType_Warning = 0x0004,MsgType_Critical = 0x0008,MsgType_Fatal = 0x0010,
};#ifdef quc
class Q_DECL_EXPORT SaveLog : public QObject
#else
class SaveLog : public QObject
#endif{Q_OBJECT
public:static SaveLog *Instance();explicit SaveLog(QObject *parent = 0);~SaveLog();private:static QScopedPointer<SaveLog> self;//是否在运行bool isRun;//文件最大行数 0表示不启用int maxRow, currentRow;//文件最大大小 0表示不启用 单位kbint maxSize;//是否重定向到网络bool toNet;//是否输出日志上下文bool useContext;//文件对象QFile *file;//日志文件路径QString path;//日志文件名称QString name;//日志文件完整名称QString fileName;//消息类型MsgType msgType;private:void openFile(const QString &fileName);public:bool getUseContext();MsgType getMsgType();Q_SIGNALS://发送内容信号void send(const QString &content);public Q_SLOTS://启动日志服务void start();//暂停日志服务void stop();//清空状态void clear();//保存日志void save(const QString &content);//设置日志文件最大行数void setMaxRow(int maxRow);//设置日志文件最大大小 单位kbvoid setMaxSize(int maxSize);//设置监听端口void setListenPort(int listenPort);//设置是否重定向到网络void setToNet(bool toNet);//设置是否输出日志上下文void setUseContext(bool useContext);//设置日志文件存放路径void setPath(const QString &path);//设置日志文件名称void setName(const QString &name);//设置消息类型void setMsgType(const MsgType &msgType);
};#ifdef quc
class Q_DECL_EXPORT SendLog : public QObject
#else
class SendLog : public QObject
#endif{Q_OBJECT
public:static SendLog *Instance();explicit SendLog(QObject *parent = 0);~SendLog();private:static QScopedPointer<SendLog> self;//监听端口int listenPort;//网络通信对象QTcpSocket *socket;//网络监听服务器QTcpServer *server;private slots://新连接到来void newConnection();public Q_SLOTS://设置监听端口void setListenPort(int listenPort);//启动和停止服务void start();void stop();//发送日志void send(const QString &content);
};#endif // SAVELOG_H

源码下载

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

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

相关文章

Unity笔记之下拉刷新列表

这样的效果&#xff1b; 代码&#xff1a; using System; using System.Collections; using System.Collections.Generic; using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public class ScrollRectUpdateView : Mon…

NLP中的Transformer,一文掌握

Transformer变压器模型的出现 2017 年&#xff0c;Vaswani 等人在关键论文“Attention is All You Need”中介绍了 Transformer 模型&#xff0c;它标志着与以前占主导地位的基于递归神经网络的模型&#xff08;如 LSTM&#xff08;长短期记忆&#xff09;和 GRU&#xff08;门…

北京大学快手发布统一的图文视频生成大模型Video-LaVIT

随着多模态大语言模型&#xff08;LLMs&#xff09;的新发展&#xff0c;人们越来越关注如何将它们从图像-文本数据扩展到更具信息量的真实世界视频。与静态图像相比&#xff0c;视频为有效的大规模预训练带来了独特的挑战&#xff0c;因为需要对其时空动态进行建模。 针对视频…

【JavaEE初阶系列】——网络原理之进一步了解应用层以及传输层的UDP协议

目录 &#x1f6a9;进一步讲应用层 &#x1f388;自定义应用层协议 &#x1f388;用什么格式组织 &#x1f469;&#x1f3fb;‍&#x1f4bb;xml(远古的数据组织格式) &#x1f469;&#x1f3fb;‍&#x1f4bb;json(当下最流行得一种数据组织格式) &#x1f469;&…

[lesson31]完善的复数类

完善的复数类 完善的复数类 复数类应该具有的操作 运算&#xff1a;&#xff0c;-&#xff0c;*&#xff0c;/比较&#xff1a;&#xff0c;!赋值&#xff1a;求模&#xff1a;modulus 利用操作符重载 统一复数与实数的运算方式统一复数与实数的比较方式 注意事项 C规定赋…

【max材质addtive叠加模式特效渲染不出通道的解决办法】

max材质addtive叠加模式特效渲染不出通道的解决办法 2021-12-22 18:15 max的scanline扫描线&#xff0c;vray渲染可以&#xff0c;红移不行(只支持它自己的材质&#xff0c;它自己的材质没有additive模式)。据说mr是可以的。 右侧的球体使用附加不透明度。 附加不透明度通过将…

C++内存管理与模版(用法详解)

C/C中程序内存区域划分 内核空间&#xff08;用户代码不能读写&#xff09;栈&#xff08;函数中存放的变量&#xff09;内存映射段堆&#xff08;重点&#xff09;数据段&#xff08;静态区&#xff09;全局变量 / 静态变量代码段&#xff08;常量区&#xff09; 试分析下列…

Opencv3.4+FFMpeg3.4+pkg-config交叉编译arm开发板

Ubuntu16.04 64位 FFmpeg3.4 OpenCv3.4 一、下载FFmpeg https://github.com/FFmpeg/FFmpeg 1.配置 ./configure --prefix/home/zeng/ffmpeg_install --enable-cross-compile --cross-prefixarm-linux-gnueabihf- --ccarm-linux-gnueabihf-gcc --target-oslinux --cpuco…

负载均衡器如何工作,为什么如此重要?

现代应用程序和网站处理大量流量。负载均衡器是保证大型系统平稳运行的主要工具之一。 负载平衡器负责跨多个服务器路由客户端请求以分配负载并防止出现瓶颈。 这有助于最大限度地提高吞吐量、减少响应时间并优化资源使用。 负载均衡器的运行情况&#xff1a; (1).客户端请…

阿姨吐槽年轻人卧铺挂帘子不让坐 评论区吵翻天了

近日&#xff0c;网络流传的一段短视频激起了公众的广泛热议。 这段视频展现了一位阿姨与在下铺挂帘子的年轻人之间的冲突。 视频中&#xff0c;阿姨情绪激动&#xff0c;她用镜头对准了那位年轻人&#xff0c;指责他在下铺挂帘子&#xff0c;使得一位70岁的老人无法坐下。 阿姨…

EasyRecovery数据恢复软件2024免费版下载亲测可用(支持win7,win10)

EasyRecovery数据恢复软件是由全球著名的数据恢复公司Ontrack出品的一款专业级数据文件恢复工具。它支持恢复多种存储介质上的数据&#xff0c;包括硬盘、光盘、U盘/移动硬盘、数码相机以及Raid文件恢复等&#xff0c;能恢复的文件类型也相当丰富&#xff0c;包括文档、表格、图…

磁盘管理和文件系统

一.磁盘基础 1.磁盘结构 &#xff08;1&#xff09;物理结构&#xff1a; 盘片&#xff1a;硬盘有多个盘片&#xff0c;每盘片2面 磁头&#xff1a;每面一个磁头 &#xff08;2&#xff09;硬盘的数据结构 扇区&#xff1a;盘片被分为多个扇形区域&#xff0c;每个扇区存…

Django之rest_framework(四)

扩展的视图类介绍 rest_framework提供了几种后端视图(对数据资源进行增删改查)处理流程的实现,如果需要编写的视图属于这几种,则视图可以通过继承相应的扩展类来复用代码,减少自己编写的代码量 官网:3 - Class based views - Django REST framework rest_framework.mixi…

冯喜运:4.16市场洞察:中东风暴搅动汇市,现货黄金原油走势分析

【黄金消息面分析 】周一(4月15日)&#xff0c;欧洲时段黄金价格已经从高点回落&#xff0c;目前交投于2351.52美元/盎司&#xff0c;稍早曾短暂攀至2372美元&#xff0c;未能重现上周收盘时触及的2431美元高位。定于周一晚些时候公布的美国3月零售销售数据也可能对美元汇率产生…

2024 EasyRecovery三分钟帮你恢复 电脑硬盘格式化

随着数字化时代的到来&#xff0c;我们的生活和工作中越来越依赖于电子设备。然而&#xff0c;电子设备中的数据丢失问题也随之而来。数据丢失可能是由各种原因引起的&#xff0c;如硬盘故障、病毒感染、误删除等。面对这种情况&#xff0c;一个高效、可靠的数据恢复工具变得尤…

轻量级的Spring Cloud Gateway实践,实现api和websocket转发

当国内大部分都是粘贴复制一些重型框架时&#xff0c;有没有人会想到&#xff0c;我们自己做一个小项目&#xff0c;几个小的Spring boot的项目时&#xff0c;我们是否还需要按部就班的用我们公司中用到的Nacos&#xff0c;这种冗余且调配复杂的组件呢&#xff1f; 不是本人说…

华为HarmonyOS 4.2公测升级计划扩展至15款新机型

华为近日宣布&#xff0c;HarmonyOS 4.2操作系统的公测升级计划将扩展到包括华为P50系列在内的15款设备。这一更新旨在为用户提供更优化的系统性能和增强的功能。 参与此次公测的机型包括华为P50、华为P50 Pro及其典藏版、华为P50E、华为P50 Pocket及其艺术定制版、华为nova系…

计算机笔记(11)续20个

180&#xff0e;时钟频率2.0GHz表示一秒有2*10的9次方个时钟周期&#xff0c;若执行一条指令需要2个时钟周期&#xff0c;则每秒执行的指令数为2*10的9次方/21*10的9次方 181.同轴电缆粗缆采用AUI头作为连接器件 182. 183.win7中的回收站&#xff0c;存放的是硬盘上被删除的…

【多线程】单例模式 | 饿汉模式 | 懒汉模式 | 指令重排序问题

文章目录 单例模式一、单例模式1.饿汉模式2.懒汉模式&#xff08;单线程&#xff09;3.懒汉模式&#xff08;多线程&#xff09;改进 4.指令重排序1.概念2.question:3.解决方法4总结&#xff1a; 单例模式 一、单例模式 单例&#xff0c;就是单个实例 在有些场景中&#xff0c…

Adobe Premiere 2020 下载地址及安装教程

Premiere是一款专业的视频编辑软件&#xff0c;由Adobe Systems开发。它为用户提供了丰富的视频编辑工具和创意效果&#xff0c;可用于电影、电视节目、广告和其他多媒体项目的制作。 Premiere具有直观的用户界面和强大的功能&#xff0c;使得编辑和处理视频变得简单而高效。它…