diff options
Diffstat (limited to 'core/logger.c')
| -rw-r--r-- | core/logger.c | 45 |
1 files changed, 22 insertions, 23 deletions
diff --git a/core/logger.c b/core/logger.c index 38ac8ed..e088c55 100644 --- a/core/logger.c +++ b/core/logger.c @@ -3,35 +3,44 @@ enum LogLevel { LOG_INFO, LOG_WARN, - LOG_ERRO, }; char g_log_buff[LOG_LINE_SIZE]; -void log_msg_to_buff(char *out, int size, enum LogLevel level, const char *format, va_list args) { +void log_msg_to_buff(char *out, int size, enum LogLevel level, bool colored, const char *format, va_list args) { assert(out); assert(size); - assert(level == LOG_INFO || level == LOG_WARN || level == LOG_ERRO); + assert(level == LOG_INFO || level == LOG_WARN); assert(format); struct timespec ts; clock_gettime(CLOCK_REALTIME, &ts); long msec = ts.tv_nsec / 1000000; struct tm tm = *localtime(&ts.tv_sec); - int pid = getpid(); + pid_t pid = getpid(); char *level_str = NULL; switch (level) { case LOG_INFO: level_str = "INFO"; break; case LOG_WARN: level_str = "WARN"; break; - case LOG_ERRO: level_str = "ERRO"; break; default: assert(false); } + char *color_code = NULL; + if (colored) { + switch (level) { + case LOG_INFO: color_code = "\033[1;32m"; break; + case LOG_WARN: color_code = "\033[1;33m"; break; + default: assert(false); + } + } + + // Imitate formatting style configured in 'salis.py' int col = snprintf( out, size, - "%d-%02d-%02d %02d:%02d:%02d.%03ld %d [%s] ", + "%s%d-%02d-%02d %02d:%02d:%02d,%03ld %07d [%s]%s ", + colored ? color_code : "", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, @@ -40,17 +49,18 @@ void log_msg_to_buff(char *out, int size, enum LogLevel level, const char *forma tm.tm_sec, msec, pid, - level_str + level_str, + colored ? "\033[0m" : "" ); vsnprintf(out + col, size - col, format, args); } -void log_msg(enum LogLevel level, const char *format, va_list args) { - assert(level == LOG_INFO || level == LOG_WARN || level == LOG_ERRO); +void log_msg(enum LogLevel level, bool colored, const char *format, va_list args) { + assert(level == LOG_INFO || level == LOG_WARN); assert(format); - log_msg_to_buff(g_log_buff, LOG_LINE_SIZE, level, format, args); + log_msg_to_buff(g_log_buff, LOG_LINE_SIZE, level, colored, format, args); printf("\r%s\n", g_log_buff); } @@ -59,7 +69,7 @@ void log_info(const char *format, ...) { va_list args; va_start(args, format); - log_msg(LOG_INFO, format, args); + log_msg(LOG_INFO, true, format, args); va_end(args); } @@ -68,17 +78,6 @@ void log_warn(const char *format, ...) { va_list args; va_start(args, format); - log_msg(LOG_WARN, format, args); - va_end(args); -} - -void log_erro(const char *format, ...) { - assert(format); - - va_list args; - va_start(args, format); - log_msg(LOG_ERRO, format, args); + log_msg(LOG_WARN, true, format, args); va_end(args); - - exit(1); } |
