summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/console_common.c25
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);