728x90
회사에서 진행하는 코드 프로그램 진행 시 Log 파일을 만들어 디버깅 할 수 있으면 좋겠다는 생각이 들어 작성하게 되었다.
코드 기반은 아래 블로그를 통해 진행했으며 C 대신 C++ 기반으로 작성했다.
C 디버깅용 로그 출력할 때, 자동으로 함수이름과 라인번호 출력하기
귀차니즘의 극을 달리다가 드디어 정리한다. 뭐 그리 중요하거나 대단한 기술은 아니지만, 더 머리가 굳어가기 전에 남겨두는 게 맞을 것 같아서... 코드를 작성하고 디버깅을 하다보면, 코드 어
cubian.tistory.com
위 블로그와 달리 출력되는 과정을 log.txt 로 만들어 확인할 수 있게 구현했다.
void MakeLog::LogPrint (const int line, const char *func, const char *format, ... )
{
FILE *fptr = fopen("/home/server/log/log.txt", "a");
if (fptr == NULL)
{
printf("ERROR : Could not open file \n");
}
char log[100];
va_list ap;
time_t *cur;
struct tm *now, rt;
struct timeval tv;
gettimeofday(&tv, NULL);
cur = (time_t *)&(tv.tv_sec);
now = localtime_r(cur, &rt);
va_start(ap,format);
vsprintf(log, format, ap);
fprintf(fptr, "[%02d:%02d:%02d.%03d] | <%s:%d> | %s", now->tm_hour, now->tm_min, now->tm_sec, (int)(tv.tv_usec/1000), func, line, log );
va_end(ap);
fclose(fptr);
}
기본 구조는 같으며 printf 대신 vsprintf와 fprintf를 넣어 log.txt에 저장하는 형태로 되어 있으며, 폴더 경로는 사용자가 직접 수정하여야 한다.
log.txt 파일은 실행 될 때 한 번 생성되며, 프로그램 재 실행 시 기존 log.txt 파일을 있는 지 확인 한 뒤, log.txt 파일을 삭제 후 다시 생성한다.
main 쪽에서는 해당 MakeLog를 불러와서 printf 사용하듯이 사용하면 된다.
GIT :
GitHub - rorosi/Log
Contribute to rorosi/Log development by creating an account on GitHub.
github.com
728x90
'C++' 카테고리의 다른 글
[C++] yaml-cpp 사용하기 (0) | 2024.04.10 |
---|---|
[백준] C++ 10809번 알파벳 찾기 (0) | 2022.03.11 |
[백준] C++ 4673번 셀프 넘버 (0) | 2022.03.07 |
[백준] C++ 4344번 평균은 넘겠지 (0) | 2022.02.28 |
[백준] C++ 8958번 OX퀴즈 (0) | 2022.02.28 |