본 코드는 30일이 지난 로그파일을 삭제합니다.
강조된 부분의 코드수정을 통해 제거 일정 기준을 변경시킬 수 있습니다.
//
// 폴더 경로 얻음
//
CString GetFolderPath(CString path)
{
if(path.Right(1) == _T('\\'))
{
return path;
}
else
{
CString strFolderPath;
strFolderPath = path.Left(path.ReverseFind(_T('\\'))+1);
return strFolderPath;
}
}
//
// 일정 날짜 기준 로그파일 제거
//
void DeleteLogfiles()
{
// 로그파일 형태 20111116.log
// 30일 기준 로그파일 삭제
CTime CurTime = CTime::GetCurrentTime();
CTime Day30Time;
Day30Time = CurTime - CTimeSpan(30, 0, 0, 0); // 일, 시, 분, 초
CString path, file_path, file_name;
path.Format(_T("%s*.*"), _("로그디렉토리경로\\"));
CFileFind finder;
BOOL bRes;
bRes = finder.FindFile(path);
while(bRes)
{
bRes = finder.FindNextFile();
if(!finder.IsDirectory()) // 폴더가 아니고 파일일 경우
{
// 삭제 상태 변수 초기화
bool bDelete = false;
// 현재 정보가 파일인 경우, file_data.cFileName에 파일이름이 들어있다.
file_name = finder.GetFileName();
file_path = GetFolderPath(path) + file_name;
CString strLogDate;
strLogDate = file_name.Left(8);
// 문자 길이가 맞고, 숫자로만 구성되었는지 확인
if(strLogDate.GetLength() == 8 && IsStringDigit(strLogDate))
{
int nLogYear = _ttoi(strLogDate.Left(4));
int nLogMonth = _ttoi(strLogDate.Mid(4, 2));
int nLogDay = _ttoi(strLogDate.Right(2));
CTime LogTime(nLogYear, nLogMonth, nLogDay, 0, 0, 0, 0);
if(LogTime < Day30Time)
bDelete = true;
}
else
{
// 예외사항
bDelete = true;
}
if(bDelete)
{
// 30일이 지난 로그파일은 삭제
DeleteFile(file_path);
}
}
}
}
'개발이야기 > MFC' 카테고리의 다른 글
| MFC 디렉토리 생성과 삭제 (0) | 2012.05.25 |
|---|---|
| 뮤텍스를 이용한 프로그램 중복실행 방지 (0) | 2012.05.18 |
| 로컬 IP주소 얻기 (0) | 2012.05.17 |
| 유니코드 ↔ 안시 변환함수 (0) | 2012.05.16 |
| 폴더선택 다이얼로그와 초기폴더경로 설정 (0) | 2012.05.15 |