diff --git a/common/console_common.c b/common/console_common.c index 0202345..00e020b 100644 --- a/common/console_common.c +++ b/common/console_common.c @@ -33,6 +33,15 @@ #ifndef CONFIG_CONSOLE_NONE +static const char *colored_log_level[] = { + [MSG_EMERG] = "\033[31mEMERG:\033[0m ", /* red */ + [MSG_ALERT] = "\033[31mALERT:\033[0m ", /* red */ + [MSG_CRIT] = "\033[31mCRITICAL:\033[0m ", /* red */ + [MSG_ERR] = "\033[31mERROR:\033[0m ", /* red */ + [MSG_WARNING] = "\033[33mWARNING:\033[0m ", /* yellow */ + [MSG_NOTICE] = "\033[34mNOTICE:\033[0m ", /* blue */ +}; + int barebox_loglevel = CONFIG_DEFAULT_LOGLEVEL; LIST_HEAD(barebox_logbuf); @@ -102,6 +111,18 @@ puts(str); } +static void print_colored_log_level(const int level) +{ + if (!console_allow_color()) + return; + if (level >= ARRAY_SIZE(colored_log_level)) + return; + if (!colored_log_level[level]) + return; + + pr_puts(level, colored_log_level[level]); +} + int pr_print(int level, const char *fmt, ...) { va_list args; @@ -111,6 +132,8 @@ if (!IS_ENABLED(CONFIG_LOGBUF) && level > barebox_loglevel) return 0; + print_colored_log_level(level); + va_start(args, fmt); i = vsprintf(printbuffer, fmt, args); va_end(args); @@ -129,6 +152,8 @@ if (!IS_ENABLED(CONFIG_LOGBUF) && level > barebox_loglevel) return 0; + print_colored_log_level(level); + if (dev->driver && dev->driver->name) ret += sprintf(printbuffer, "%s ", dev->driver->name);