删除最近几天的LOG记录文件

// Delete Expire Log Files
BOOL DeleteExpireFiles(LPCTSTR lpszFileExt, SYSTEMTIME* pSystemTime, int nReservedDays)
{
	BOOL bRet = FALSE;

	do
	{
		ASSERT(NULL != lpszFileExt);
		ASSERT(NULL != pSystemTime);

		if (nReservedDays <= 0) { break; }

		TCHAR szDir[MAX_PATH] = { 0 };
		GetModuleFileName(NULL, szDir, _countof(szDir) - 1);
		ASSERT(_tcslen(szDir) > 0);
		_tcsrchr(szDir, TEXT('\\'))[0] = TEXT('\0');

		TCHAR szLog[MAX_PATH] = { 0 };
		StringCchPrintf(szLog, _countof(szLog), TEXT("%s\\*%s"), szDir, lpszFileExt);

		WIN32_FIND_DATA fd = { 0 };

		HANDLE hFind = FindFirstFile(szLog, &fd);

		if (INVALID_HANDLE_VALUE == hFind) { break; }

		CTime current(*pSystemTime);

		while (TRUE)
		{
			if (!(FILE_ATTRIBUTE_DIRECTORY & fd.dwFileAttributes))
			{
				CTime time = CTime(fd.ftCreationTime);
				CTimeSpan span(nReservedDays, 0, 0, 0);

				if ((current - time) > span)
				{
					TCHAR szFile[MAX_PATH] = { 0 };
					StringCchPrintf(szFile, _countof(szFile), TEXT("%s\\%s"), szDir, fd.cFileName);

					DeleteFile(szFile);
				}
			}

			if (!FindNextFile(hFind, &fd)) { break; }
		}

		if (INVALID_HANDLE_VALUE != hFind) { FindClose(hFind); hFind = INVALID_HANDLE_VALUE; }

		// Completed
		bRet = TRUE;
	} while (0);

	return bRet;
}

// 调用方式 : e.g 保留最近三天的log记录,删除之前的log记录
SYSTEMTIME st = { 0 };
GetSystemTime(&st);
DeleteExpireFiles(TEXT(".log"), &st, 3);

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值