본문 바로가기
Linux Programming

Log template

by 감자최고 2022. 9. 28.
#ifndef __mylog_h__
#define __mylog_h__

#include <time.h>

#ifndef LOG_PROGRAM_TAG
#define LOG_PROGRAM_TAG	"[LOG]"
#endif

#define LOG_TIME_NSEC_DIV	1000 // 1000 * nano sec = micro sec.

extern int giLogLevel;

#define LOG_LEVEL_ERR	1
#define LOG_LEVEL_INFO	2
#define LOG_LEVEL_DEBUG	3
#define LOG_LEVEL_VERBOSE	4

#define LOG_BASE(level, pt, mt, x, ...)	\
	do {					\
	struct timespec tp;			\
	clock_gettime(CLOCK_BOOTTIME, &tp);	\
	if(giLogLevel >= level){				\
		printf("[%ld:%06ld]%s%s%s,%s():%d " x "\n",	\
		       tp.tv_sec, tp.tv_nsec/LOG_TIME_NSEC_DIV,	\
		       pt, mt, __FILE__, __func__, __LINE__,		\
		       ##__VA_ARGS__);					\
	}								\
	}while(0)

#define LOG_ERR(x, ...)	LOG_BASE(LOG_LEVEL_ERR, LOG_PROGRAM_TAG, " **ERROR** ", x, ##__VA_ARGS__)
#define LOG_X(level, x, ...)	LOG_BASE(level, LOG_PROGRAM_TAG, " ", x, ##__VA_ARGS__)

#endif

댓글