删除N天之前的日志

/*

功能:删除过期的日志文件。日志文件夹路径为strLogPath。

要求:

1、日志文件夹内部只能存储日志文件。不然可能会被删掉

2、日志文件名称格式为*_年月日*(比如:log_20210413.txt)或者年月日*(比如:20210413.txt)

3、iDays为保留日志的天数,超过则认为日志过期

入参:

iDays 保留日志的天数

strLogPath 日志文件夹路径

*/

void ClearLog(UINT iDays,CString strLogPath)

{

if (iDays <= 0)return;

WIN32_FIND_DATA FindFileData;

CString sAllFile = strLogPath + "\\*";

HANDLE hFind = ::FindFirstFile(sAllFile,&FindFileData);

if(INVALID_HANDLE_VALUE == hFind) return;

while(TRUE)

{

if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // 遇到文件夹

{

}

else // 遇到文件

{

CString strFileName;

strFileName.Format("%s", FindFileData.cFileName);

if (strFileName.GetLength() >= 7)

{

CString sFileFullPath = strLogPath + "\\" + strFileName;// 文件全路径

//strFileName.Replace("-", "");

if (strFileName.Find('_') != -1)

{

strFileName = strFileName.Right(strFileName.GetLength() -strFileName.Find('_') -1);

}

__int64 nFileName = _atoi64(strFileName); // 取得文件的日期,如:20101030

CTime tNowTime = CTime::GetCurrentTime();

tNowTime = tNowTime - CTimeSpan(iDays, 0, 0, 0); // 指向nDays天前的日期

__int64 nNowTime = _atoi64(tNowTime.Format("%Y%m%d"));

if (20000000 < nFileName && nFileName < nNowTime)

{

::DeleteFile(sFileFullPath);

}

}

}

if(!FindNextFile(hFind, &FindFileData))

break;

}

FindClose(hFind);

}

 

环境 windows

语言:C++

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxz520zmg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值