基于QT的日志模块

本文介绍了在C++工程中,如何基于QT构建一个独立的日志模块,以替代如boost.log和log4cpp等第三方库。该模块支持日志清除和分割策略,包括按时间和空间限制,并详细说明了具体的配置,如默认存储7天内日志和保留100M空间。日志切分策略包括每日0点和文件大小超过10M时触发。为了保证业务层不受影响,日志写入操作在单独线程中进行,利用了之前开发的消费组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++工程中的日志模块,第三方的已经有很多了,比如boost.log ,log4cpp等等,都提供了很便利的方法。boost中log模块参见之前的文章:https://blog.youkuaiyun.com/linfengmove/article/details/85077462

这些日志模块都会涉及到日志的清除策略和分割策略。因为先有工程师基于QT来做的,又不想引入boost这个大块,所以就基于QT的日志输出建立了一个独立的日志模块。日志模块可以设置日志的清除策略,从两个维度: 时间,默认是存储7天内的日志。空间,保证日志所处分区的最小空间,默认是预留100M。 日志切分策略也是两个维度,时间上,默认每次初始化日志模块和0点时都会创建新的日志文件。空间上,日志超过一定大小就会产生新日志,默认是10M。日志写入的操作是在另外一个线程中进行的,保证不影响到业务层。这个异步的日志内容缓存和写入是基于之前的一个消费组件来做的:https://blog.youkuaiyun.com/linfengmove/article/details/99332038

日志组件:

.h

#pragma once
#include <QObject>
#include <QFile>
# if defined(COMMON_LIB)
#  define LOG_MGR Q_DECL_EXPORT
# else
#  define LOG_MGR Q_DECL_IMPORT
# endif

class LOG_MGR LogMgr :public QObject
{
	Q_OBJECT;
public:
	static LogMgr* GetInstance()
	{
		static LogMgr inst;
		return &inst;
	}
	LogMgr();
	~LogMgr();
	void InitLog(QString dir);
	QString logPath() const;
	//0~23
	void SetRotateTimePoint(int hour, int minute, int sec);
	void SetRotateSize(int size);
	void SetClearStrategy(int fileKeepDays, int remainingDiskSpace);
};

        .cpp 

#include "LogMgr.h"
#include <QCoreApplication>
#include <
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值