log: Allow padding of the function name

At present when function names are logged, the output is a little hard to
read since every function is a different length. Add a way to pad the
names so that the log messages line up vertically. This doesn't work if
the function name is very long, but it makes a big difference in most
cases.

Use 20 characters as a default since this covers the vast majority of
functions.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2021-07-05 16:33:00 -06:00
parent 96f37b092f
commit 72fa1ad8d9
3 changed files with 18 additions and 8 deletions

View file

@ -322,6 +322,14 @@ config LOGF_FUNC
Show the function name in log messages by default. This value can Show the function name in log messages by default. This value can
be overridden using the 'log format' command. be overridden using the 'log format' command.
config LOGF_FUNC_PAD
int "Number of characters to use for function"
default 20
help
Sets the field width to use when showing the function. Set this to
a larger value if you have lots of long function names, and want
things to line up.
config LOG_SYSLOG config LOG_SYSLOG
bool "Log output to syslog server" bool "Log output to syslog server"
depends on NET depends on NET

View file

@ -38,7 +38,7 @@ static int log_console_emit(struct log_device *ldev, struct log_rec *rec)
if (fmt & BIT(LOGF_LINE)) if (fmt & BIT(LOGF_LINE))
printf("%d-", rec->line); printf("%d-", rec->line);
if (fmt & BIT(LOGF_FUNC)) if (fmt & BIT(LOGF_FUNC))
printf("%s()", rec->func); printf("%*s()", CONFIG_LOGF_FUNC_PAD, rec->func);
} }
if (fmt & BIT(LOGF_MSG)) if (fmt & BIT(LOGF_MSG))
printf("%s%s", add_space ? " " : "", rec->msg); printf("%s%s", add_space ? " " : "", rec->msg);

View file

@ -76,7 +76,8 @@ static int do_check_log_entries(struct unit_test_state *uts, int flags, int min,
for (i = LOGL_FIRST; i < LOGL_COUNT; i++) { for (i = LOGL_FIRST; i < LOGL_COUNT; i++) {
if (flags & EXPECT_FORCE) if (flags & EXPECT_FORCE)
ut_assert_nextline("func() _log force %d", i); ut_assert_nextline(" func() _log force %d",
i);
if (flags & EXPECT_DEBUG) if (flags & EXPECT_DEBUG)
ut_assert_nextline("_log force %d", i); ut_assert_nextline("_log force %d", i);
} }
@ -277,7 +278,8 @@ int do_log_test_helpers(struct unit_test_state *uts)
log_io("level %d\n", LOGL_DEBUG_IO); log_io("level %d\n", LOGL_DEBUG_IO);
for (i = LOGL_EMERG; i <= _LOG_MAX_LEVEL; i++) for (i = LOGL_EMERG; i <= _LOG_MAX_LEVEL; i++)
ut_assert_nextline("%s() level %d", __func__, i); ut_assert_nextline("%*s() level %d", CONFIG_LOGF_FUNC_PAD,
__func__, i);
ut_assert_console_end(); ut_assert_console_end();
return 0; return 0;
} }
@ -297,14 +299,14 @@ int do_log_test_disable(struct unit_test_state *uts)
{ {
ut_assertok(console_record_reset_enable()); ut_assertok(console_record_reset_enable());
log_err("default\n"); log_err("default\n");
ut_assert_nextline("%s() default", __func__); ut_assert_nextline("%*s() default", CONFIG_LOGF_FUNC_PAD, __func__);
ut_assertok(log_device_set_enable(LOG_GET_DRIVER(console), false)); ut_assertok(log_device_set_enable(LOG_GET_DRIVER(console), false));
log_err("disabled\n"); log_err("disabled\n");
ut_assertok(log_device_set_enable(LOG_GET_DRIVER(console), true)); ut_assertok(log_device_set_enable(LOG_GET_DRIVER(console), true));
log_err("enabled\n"); log_err("enabled\n");
ut_assert_nextline("%s() enabled", __func__); ut_assert_nextline("%*s() enabled", CONFIG_LOGF_FUNC_PAD, __func__);
ut_assert_console_end(); ut_assert_console_end();
return 0; return 0;
} }