C++工程中的日志模块,第三方的已经有很多了,比如boost.log ,log4cpp等等,都提供了很便利的方法。boost中log模块参见之前的文章:https://blog.csdn.net/linfengmove/article/details/85077462
这些日志模块都会涉及到日志的清除策略和分割策略。因为先有工程师基于QT来做的,又不想引入boost这个大块,所以就基于QT的日志输出建立了一个独立的日志模块。日志模块可以设置日志的清除策略,从两个维度: 时间,默认是存储7天内的日志。空间,保证日志所处分区的最小空间,默认是预留100M。 日志切分策略也是两个维度,时间上,默认每次初始化日志模块和0点时都会创建新的日志文件。空间上,日志超过一定大小就会产生新日志,默认是10M。日志写入的操作是在另外一个线程中进行的,保证不影响到业务层。这个异步的日志内容缓存和写入是基于之前的一个消费组件来做的:https://blog.csdn.net/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 <QDateTime>