diff options
author | Julius Werner <jwerner@chromium.org> | 2022-01-21 15:24:12 -0800 |
---|---|---|
committer | Julius Werner <jwerner@chromium.org> | 2022-02-07 23:27:34 +0000 |
commit | a120e0defd14f20ed1b2cb7796d47afbb2f0b54f (patch) | |
tree | c035503c974a5cee8f25a19baf7a6dcff449d416 /src/commonlib | |
parent | 6bb9e57a8fb4418af24ddfbc45fb597dafa3a95f (diff) |
console: Add ANSI escape sequences for highlighting
This patch adds ANSI escape sequences to highlight a log line based on
its loglevel to the output of "interactive" consoles that are meant to
be displayed on a terminal (e.g. UART). This should help make errors and
warnings stand out better among the usual spew of debug messages. For
users whose terminal or use case doesn't support these sequences for
some reason (or who simply don't like them), they can be disabled with a
Kconfig.
While ANSI escape sequences can be used to add color, minicom (the
presumably most common terminal emulator for UART endpoints?) doesn't
support color output unless explicitly enabled (via -c command line
flag), and other terminal emulators may have similar restrictions, so in
an effort to make this as widely useful by default as possible I have
chosen not to use color codes and implement this highlighting via
bolding, underlining and inverting alone (which seem to go through in
all cases). If desired, support for separate color highlighting could be
added via Kconfig later.
Signed-off-by: Julius Werner <jwerner@chromium.org>
Change-Id: I868f4026918bc0e967c32e14bcf3ac05816415e8
Reviewed-on: https://review.coreboot.org/c/coreboot/+/61307
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Raul Rangel <rrangel@chromium.org>
Diffstat (limited to 'src/commonlib')
-rw-r--r-- | src/commonlib/include/commonlib/loglevel.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/commonlib/include/commonlib/loglevel.h b/src/commonlib/include/commonlib/loglevel.h index 68b228528c..1594465c37 100644 --- a/src/commonlib/include/commonlib/loglevel.h +++ b/src/commonlib/include/commonlib/loglevel.h @@ -178,6 +178,29 @@ static const char bios_log_prefix[BIOS_LOG_PREFIX_MAX_LEVEL + 1][5] = { [BIOS_SPEW] = "SPEW ", }; +/* + * When printing to terminals supporting ANSI escape sequences, the following + * escape sequences can be printed to highlight the respective log levels + * according to the BIOS_LOG_ESCAPE_PATTERN printf() pattern. At the end of a + * line, highlighting should be reset with the BIOS_LOG_ESCAPE_RESET seqence. + * + * The escape sequences used here set flags with the following meanings: + * 1 = bold, 4 = underlined, 5 = blinking, 7 = inverted + */ +#define BIOS_LOG_ESCAPE_PATTERN "\x1b[%sm" +#define BIOS_LOG_ESCAPE_RESET "\x1b[0m" +static const char bios_log_escape[BIOS_LOG_PREFIX_MAX_LEVEL + 1][8] = { + [BIOS_EMERG] = "1;4;5;7", + [BIOS_ALERT] = "1;4;7", + [BIOS_CRIT] = "1;7", + [BIOS_ERR] = "7", + [BIOS_WARNING] = "1;4", + [BIOS_NOTICE] = "1", + [BIOS_INFO] = "0", + [BIOS_DEBUG] = "0", + [BIOS_SPEW] = "0", +}; + #endif /* __ASSEMBLER__ */ #endif /* LOGLEVEL_H */ |