summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorEugen Wiens <eugen.wiens@jumo.net>2018-02-21 09:26:38 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2018-02-22 08:47:39 +0100
commita019f725ab48536a4bb93ec2dea319d9fc5206c5 (patch)
tree21af6421f29e0305f7f04a16e3b215d6719dd6d7 /common
parent7e879bd678fa1ac8b1b0bd4e7b9c845b0e967da2 (diff)
downloadbarebox-a019f725ab48536a4bb93ec2dea319d9fc5206c5.tar.gz
barebox-a019f725ab48536a4bb93ec2dea319d9fc5206c5.tar.xz
console: added colored print out of log levels
When the system is booting the warnings and errors are not be quickly discovered. With this improvement the errors are colored red, the warnings yellow and the notices blue. Signed-off-by: Eugen Wiens <eugen.wiens@jumo.net> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
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);