#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
댓글