/* * Created by yuuta on 1/1/22. */ #define _GNU_SOURCE #include "log.h" #include "config.h" #include #include #include #if defined(__linux__) #include #include #include #elif defined(_WIN32) #include #endif void g_log(enum log_level level, const char *file, int line, const char *format, ...) { FILE *stream = stderr; switch (level) { case log_fetal: fprintf(stream, "F"); break; case log_error: fprintf(stream, "E"); break; case log_warn: fprintf(stream, "W"); break; case log_info: fprintf(stream, "I"); break; case log_debug: #ifdef DEBUG fprintf(stream, "D"); break; #else return; #endif default: fprintf(stderr, "Unknown log level: %d.\n", level); assert(0); } int tid = -1; #if defined(__linux__) tid = (int) syscall(__NR_gettid); #elif defined(_WIN32) tid = (int) GetCurrentThreadId(); #endif fprintf(stream, "[%d %s:%d]: ", tid, file, line); va_list list; va_start(list, format); vfprintf(stream, format, list); va_end(list); fprintf(stream, "\n"); }