diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/console_common.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/common/console_common.c b/common/console_common.c index 0202345a62..00e020bd35 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 @@ nolog: 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 @@ int pr_print(int level, const char *fmt, ...) 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 @@ int dev_printf(int level, const struct device_d *dev, const char *format, ...) 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); |