#ifndef __TRACE_H__ #define __TRACE_H__ #include #define BLACK "\033[30m" #define RED "\033[31m" #define GREEN "\033[32m" #define YELLOW "\033[33m" #define BLUE "\033[34m" #define PURPLE "\033[35m" #define DGREEN "\033[6m" #define WHITE "\033[7m" #define CYAN "\x1b[36m" #define NONE "\033[0m" #ifdef NDEBUG #define TRACE_DEBUG_JSON(fmt, args...) #define TRACE_DEBUG(fmt, args...) #define TRACE_INFO(fmt, args...) #define TRACE_WARN(fmt, args...) #define TRACE_ERROR(fmt, args...) #else #define TRACE_DEBUG(fmt, args...) do { fprintf(stderr, "[%s:%d] " CYAN "DEBUG" NONE ": " fmt "\n", __func__, __LINE__, ##args); } while(0) #define TRACE_INFO(fmt, args...) do { fprintf(stderr, "[%s:%d] " GREEN "INFO" NONE ": " fmt "\n", __func__, __LINE__, ##args); } while(0) #define TRACE_WARN(fmt, args...) do { fprintf(stderr, "[%s:%d] " YELLOW "WARN" NONE": " fmt "\n", __func__, __LINE__, ##args); } while(0) #define TRACE_ERROR(fmt, args...) do { fprintf(stderr, "[%s:%d] " RED "ERROR" NONE ": " fmt "\n", __func__, __LINE__, ##args); } while(0) #define TRACE_DEBUG_JSON(fmt, args...) #endif #endif // __TRACE_H__