[C++] 로그 남기기
C++

[C++] 로그 남기기

회사에서 진행하는 코드 프로그램 진행 시 Log 파일을 만들어 디버깅 할 수 있으면 좋겠다는 생각이 들어 작성하게 되었다.

코드 기반은 아래 블로그를 통해 진행했으며 C 대신 C++ 기반으로 작성했다.

https://cubian.tistory.com/25

 

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 파일을 있는 지 확인 한 뒤, log.txt 파일을 삭제 후 다시 생성한다.

 

main 쪽에서는 해당 MakeLog를 불러와서 printf 사용하듯이 사용하면 된다.

 

GIT :

https://github.com/rorosi/Log

 

GitHub - rorosi/Log

Contribute to rorosi/Log development by creating an account on GitHub.

github.com

 

'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