diff --git a/src/log.h b/src/log.h index 9512159..a373fe7 100644 --- a/src/log.h +++ b/src/log.h @@ -2,6 +2,7 @@ #define _PAWN_LSP_LOG_H_ #include +#include #define COL_BLU "\e[38;5;12m\e[1m" #define COL_GRE "\e[38;5;82m\e[1m" @@ -14,34 +15,52 @@ extern FILE *logger; -#define log_info(fmt, ...) do { \ - const char *__fmt = "[" COL_CYA "INFO " COL_DONE " | %s:%d] " fmt; \ - fprintf(stderr, __fmt, __FILE__, __LINE__, ##__VA_ARGS__); \ - fflush(stderr); \ - if (logger) { \ - fprintf(logger, __fmt, __FILE__, __LINE__, ##__VA_ARGS__); \ - fflush(logger); \ - } \ +#define log_info(fmt, ...) do { \ + struct timespec __now = {0}; \ + double __snow; \ + const char *__fmt = "[" COL_CYA "INFO " COL_DONE " |%.3f| %s:%d|> " fmt; \ + \ + clock_gettime(CLOCK_REALTIME, &__now); \ + __snow = (double)__now.tv_sec + ((double)__now.tv_nsec / 1000000000.0f); \ + \ + fprintf(stderr, __fmt, __snow, __FILE__, __LINE__, ##__VA_ARGS__); \ + fflush(stderr); \ + if (logger) { \ + fprintf(logger, __fmt, __FILE__, __LINE__, ##__VA_ARGS__); \ + fflush(logger); \ + } \ } while (0) -#define log_warn(fmt, ...) do { \ - const char *__fmt = "[" COL_YEL "WARN " COL_DONE " | %s:%d] " fmt; \ - fprintf(stderr, __fmt, __FILE__, __LINE__, ##__VA_ARGS__); \ - fflush(stderr); \ - if (logger) { \ - fprintf(logger, __fmt, __FILE__, __LINE__, ##__VA_ARGS__); \ - fflush(logger); \ - } \ +#define log_warn(fmt, ...) do { \ + struct timespec __now = {0}; \ + double __snow; \ + const char *__fmt = "[" COL_YEL "WARN " COL_DONE " |%.3f| %s:%d|> " fmt; \ + \ + clock_gettime(CLOCK_REALTIME, &__now); \ + __snow = (double)__now.tv_sec + ((double)__now.tv_nsec / 1000000000.0f); \ + \ + fprintf(stderr, __fmt, __snow, __FILE__, __LINE__, ##__VA_ARGS__); \ + fflush(stderr); \ + if (logger) { \ + fprintf(logger, __fmt, __FILE__, __LINE__, ##__VA_ARGS__); \ + fflush(logger); \ + } \ } while (0) -#define log_error(fmt, ...) do { \ - const char *__fmt = "[" COL_ORA "ERROR" COL_DONE " | %s:%d] " fmt; \ - fprintf(stderr, __fmt, __FILE__, __LINE__, ##__VA_ARGS__); \ - fflush(stderr); \ - if (logger) { \ - fprintf(logger, __fmt, __FILE__, __LINE__, ##__VA_ARGS__); \ - fflush(logger); \ - } \ +#define log_error(fmt, ...) do { \ + struct timespec __now = {0}; \ + double __snow; \ + const char *__fmt = "[" COL_ORA "ERROR" COL_DONE " |%.3f| %s:%d|> " fmt; \ + \ + clock_gettime(CLOCK_REALTIME, &__now); \ + __snow = (double)__now.tv_sec + ((double)__now.tv_nsec / 1000000000.0f); \ + \ + fprintf(stderr, __fmt, __snow, __FILE__, __LINE__, ##__VA_ARGS__); \ + fflush(stderr); \ + if (logger) { \ + fprintf(logger, __fmt, __FILE__, __LINE__, ##__VA_ARGS__); \ + fflush(logger); \ + } \ } while (0) #endif /* _PAWN_LSP_LOG_H_ */