// // Created by mati on 08.05.19. // #include "../../log/log.hpp" #include #include #include #define LOGGER_BUFFER_SIZE 4096 #define CONSOLE_ESCAPE_COLOR_BLACK "\x1b[30m" #define CONSOLE_ESCAPE_COLOR_RED "\x1b[31m" #define CONSOLE_ESCAPE_COLOR_GREEN "\x1b[32m" #define CONSOLE_ESCAPE_COLOR_YELLOW "\x1b[33m" #define CONSOLE_ESCAPE_COLOR_BLUE "\x1b[34m" #define CONSOLE_ESCAPE_COLOR_MAGENTA "\x1b[35m" #define CONSOLE_ESCAPE_COLOR_CYAN "\x1b[36m" #define CONSOLE_ESCAPE_COLOR_WHITE "\x1b[37m" #define CONSOLE_ESCAPE_COLOR_RESET "\x1b[0m" #define CONSOLE_ESCAPE_COLOR_BACKGROUND_BLACK "\x1b[40m" #define CONSOLE_ESCAPE_COLOR_BACKGROUND_RED "\x1b[41m" #define CONSOLE_ESCAPE_COLOR_BACKGROUND_GREEN "\x1b[42m" #define CONSOLE_ESCAPE_COLOR_BACKGROUND_YELLOW "\x1b[43m" #define CONSOLE_ESCAPE_COLOR_BACKGROUND_BLUE "\x1b[44m" #define CONSOLE_ESCAPE_COLOR_BACKGROUND_MAGENTA "\x1b[45m" #define CONSOLE_ESCAPE_COLOR_BACKGROUND_CYAN "\x1b[46m" #define CONSOLE_ESCAPE_COLOR_BACKGROUND_WHITE "\x1b[47m" const char *level_names[] = { "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL" }; #if LOG_USE_COLOR == 1 static const char *level_colors[] = { "\x1b[94m", "\x1b[36m", "\x1b[32m", "\x1b[33m", "\x1b[31m", "\x1b[35m" }; #endif struct Logger{ Logger( logger_level level = LOGTRACE ) : level{ level } { } std::mutex lock; logger_level level; }; static Logger logger; static char loggerBuffer[LOGGER_BUFFER_SIZE] = {0}; void log_Printf(const char *fmt, ...) { /* Acquire lock */ std::lock_guard guard(logger.lock); char* ptr = loggerBuffer; ptr[0] = 0; va_list args; va_start(args, fmt); vsnprintf(ptr,LOGGER_BUFFER_SIZE-1, fmt, args); va_end(args); std::cout< guard(logger.lock); char* ptr = loggerBuffer; va_list args; #if LOG_USE_COLOR == 1 ptr += sprintf(ptr,"%s%-5s\x1b[0m \x1b[90m%s:%d:\x1b[0m ", level_colors[level], level_names[level], file, line); #else ptr += sprintf(ptr,"%-5s %s:%s:%d: ", level_names[level], file, function, line); #endif va_start(args, fmt); ptr += vsnprintf(ptr,&loggerBuffer[LOGGER_BUFFER_SIZE]-ptr, fmt, args); va_end(args); ptr += sprintf(ptr,"\r\n"); std::cout<