#include #include #include #include #include #include "log.h" #ifdef LOG void logmsg(LogLevel level, const char* msg, ...) { INIT_LOG_BOUNDS INIT_LOG_BUFFER(buffer) time_t now = time(NULL); struct tm *tm = localtime(&now); APPEND(buffer, "\x1b[97m%02d:%02d:%02d ", tm->tm_hour, tm->tm_min, tm->tm_sec); switch (level) { case DEBUG: APPEND(buffer, "\x1b[%dm%s\x1b[97m ", 95, "DEBUG"); break; case TRACE: APPEND(buffer, "\x1b[%dm%s\x1b[97m ", 96, "TRACE"); break; case INFO: APPEND(buffer, "\x1b[%dm%s\x1b[97m ", 92, "INFO"); break; case WARN: APPEND(buffer, "\x1b[%dm%s\x1b[97m ", 93, "WARN"); break; case ERROR: APPEND(buffer, "\x1b[%dm%s\x1b[97m ", 91, "ERROR"); break; break; } va_list valist; va_start(valist, msg); t += vsnprintf(buffer + t, BUF_LENGTH - t, msg, valist); va_end(valist); APPEND(buffer, "\n"); fwrite(&buffer, t, 1, stdout); } #endif