#include #include void log_error(const char *const fmt, ...) { va_list args; va_start(args, fmt); fprintf(stderr, "[ERROR]: "); vfprintf(stderr, fmt, args); va_end(args); } void log_warning(const char *const fmt, ...) { va_list args; va_start(args, fmt); fprintf(stderr, "[WARNING]: "); vfprintf(stderr, fmt, args); va_end(args); } void log_debug(const char *const fmt, ...) { #ifndef DEBUG return; #endif struct timespec t; clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &t); va_list args; va_start(args, fmt); fprintf(stderr, "[%ld.%03ld][DEBUG]: ", t.tv_sec, t.tv_nsec / 1000000); vprintf(fmt, args); va_end(args); } void log_info(const char *const fmt, ...) { va_list args; va_start(args, fmt); printf("[INFO]: "); vprintf(fmt, args); va_end(args); }