티스토리 뷰
Visual Studio 2012
로그를 파일로 따로 저장해보자.
로그 저장하기의 심화버전이랄까..
가변인수를 활용해서 로그 저장하기 참조
기존에 작성했던 함수에 FILE 포인터 변수를 추가하여 파일으로 저장까지 해보자.
기왕 저장하는거 보기 편하게 SYSTEMTIME을 활용하여 날짜도 적용한다.
1. 변수 및 함수 선언
header.h
FILE* fP; //파일 포인터 추가 void AddLog(char* format, ...); bool OpenFile(); void CloseFile();
파일 포인터 변수와 로그 저장 함수, 파일을 열고 닫을 함수를 준비한다.
2. 소스코드를 살펴보자
main.cpp
void AddLog(char* format, ...) { char buf[512]="Result: "; va_list va; va_start(va, format); vsprintf_s(buf+strlen(buf), 512-strlen(buf), format, va); va_end(va); OpenFile(); if(fP!=NULL) { fprintf(fP, "%s", buf); } CloseFile(); //puts(buf); }
기존 함수에 파일 관련 코드들을 추가했다.
루틴
1) OpenFile 함수로 파일포인터에 원하는 파일을 연다.
2) 파일이 정상적으로 열려있다면 fprintf로 파일안에 작성된 로그를 저장한다.
3) CloseFile로 열린 파일을 해제한다.
bool OpenFile() { CString strDate, strDate2, strPath; CString strLogF; SYSTEMTIME st; GetLocalTime(&st); strDate.Format("%04d-%02d", st.wYear, st.wMonth); strPath="D:\\LogData"; strPath = strPath + "\\" + strDate; CreateDirectory(strPath, NULL ); strDate.Format("%02d", st.wDay); strPath = strPath + "\\" + strDate; CreateDirectory(strPath, NULL ); strDate2.Format("\\%02d.txt", st.wHour); strDate=strPath+strDate2; errno_t err; if((err = fopen_s(&fP, strDate, "a+")) != 0) { fP = NULL; return FALSE; } else { ASSERT(fP != NULL); setvbuf(fP, NULL, _IONBF, 0 ); } return TRUE; }
SYSTEMTIME을 활용하여 현재 해당 연도, 달, 일을 읽어올 수 있다.
CreaterDirectory함수를 활용하여 원하는 폴더를 만든 후에 그 폴더 위치에 파일을 생성후 열어놓는다.
(예제에서 로그가 성공적으로 저장되는 위치는 D:\LogData\YYYY-MM\DD\HH.txt 이다.)
ASSERT문을 사용하여 추후에 생길 버그도 대처 할수 있게 한다.
파일을 정상적으로 생성하고 열어놓았다면, setvbuf를 통해 버퍼를 만들어 대기시킨다.
void CloseFile() { if(fP == NULL) return; ASSERT(fP != NULL); fclose(fP); fP=NULL; }
열어놓은 파일을 해제한다.
int main() { int a=1, b=2; AddLog("%d + %d = %d", a,b,a+b); return 0; }
위와 같이 한다면 생성된 파일에 사용되는 문자는
Result: 1 + 2 = 3 이 될 것이다.
끝
'Programming > MFC(C++)' 카테고리의 다른 글
[MFC] INI 파일 활용 하기(문자열 값 저장/불러오기) (0) | 2018.12.17 |
---|---|
[MFC] 대화상자 트레이 아이콘 컨트롤하기(TrayIcon) (0) | 2018.12.11 |
[C++] 가변인수를 활용해보자.(로그 저장하기) (0) | 2018.12.10 |
[MFC] 스레드 생성시 구조체 인자 넣기 (0) | 2018.12.07 |
[MFC] 레지스트리(Registry) 활용하여 값 저장/불러오기 (0) | 2018.11.29 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 부가가치세전산매체
- CMFCBUTTON
- 스쿠트항공 환불받기
- 청년내일채움공제 만기신청
- sqlite3
- Sticky Notes Loading
- MFC Modeless
- 소켓
- 프로세스이름변경
- 모달리스 다이얼로그
- 청년내일채움공제
- ADODB
- 해외송금확인
- 법정동코드
- MXCOMPONENT
- 부가가치세
- MSSQL
- MFC
- 세금계산서합계표양식
- 전자신고변환
- SendMessage
- 항공알파벳
- c++
- #자동업데이트
- 전자신고파일설명서
- 모달리스
- 스티커메모로드중
- MFC ADO
- Modeless
- ADO
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함