1.现象
log文件较大,日志缓存天数过多,占用内存太大,所以需要定期清理日志文件
2.方法
采用定时器,到设置的时间就执行清理函数
connect(&m_clearTimer, SIGNAL(timeout()),this,SLOT(clearTimerSlot()));
m_clearTimer.start(10000);
//1.获取当前日期
QDateTime current_date_time = QDateTime::currentDateTime();
QString date = current_date_time.toString("yyyy-MM-dd");
//2.获取文件夹路径,遍历文件夹
QString logPath = QCoreApplication::applicationDirPath()+"/logger";
QStringList foldernames;
QStringList filters;
filters << "*.log";
QDir dir(logPath);
//搜索当前目录符合条件的文件
foreach(QString file, dir.entryList(filters, QDir::Files))
foldernames += logPath + '/' + file;
//QFileInfoList fileList = dir.entryInfoList();//当前文件夹下只有日志文件,也可以直接获取全部文件
//3.比较日期
if (foldernames.size() > 5)
{
foreach(QString fileName, foldernames)
{
//获取文件的创建时间
QFileInfo info(fileName);
QDateTime dt = info.created();//获取文件创建时间
int days = dt.daysTo(current_date_time);//获取文件相对于当前时间的天数
if (days > 5)
{
QFile::remove(fileName);//大于5天,移除文件
}
}
}