본 코드는 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 |