Commit 72fa1ad8 authored by Simon Glass's avatar Simon Glass
Browse files

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

Use 20 characters as a default since this covers the vast majority of
Signed-off-by: Simon Glass's avatarSimon Glass <>
parent 96f37b09
......@@ -322,6 +322,14 @@ config LOGF_FUNC
Show the function name in log messages by default. This value can
be overridden using the 'log format' command.
int "Number of characters to use for function"
default 20
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.
bool "Log output to syslog server"
depends on NET
......@@ -38,7 +38,7 @@ static int log_console_emit(struct log_device *ldev, struct log_rec *rec)
if (fmt & BIT(LOGF_LINE))
printf("%d-", rec->line);
if (fmt & BIT(LOGF_FUNC))
printf("%s()", rec->func);
printf("%*s()", CONFIG_LOGF_FUNC_PAD, rec->func);
if (fmt & BIT(LOGF_MSG))
printf("%s%s", add_space ? " " : "", rec->msg);
......@@ -62,9 +62,9 @@ static int do_check_log_entries(struct unit_test_state *uts, int flags, int min,
for (i = min; i <= max; i++) {
if (flags & EXPECT_LOG)
ut_assert_nextline("do_log_run() log %d", i);
ut_assert_nextline(" do_log_run() log %d", i);
if (flags & EXPECT_DIRECT)
ut_assert_nextline("func() _log %d", i);
ut_assert_nextline(" func() _log %d", i);
if (flags & EXPECT_DEBUG) {
ut_assert_nextline("log %d", i);
ut_assert_nextline("_log %d", i);
......@@ -72,11 +72,12 @@ static int do_check_log_entries(struct unit_test_state *uts, int flags, int min,
if (flags & EXPECT_EXTRA)
for (; i <= LOGL_MAX ; i++)
ut_assert_nextline("func() _log %d", i);
ut_assert_nextline(" func() _log %d", i);
for (i = LOGL_FIRST; i < LOGL_COUNT; i++) {
if (flags & EXPECT_FORCE)
ut_assert_nextline("func() _log force %d", i);
ut_assert_nextline(" func() _log force %d",
if (flags & EXPECT_DEBUG)
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);
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);
return 0;
......@@ -297,14 +299,14 @@ int do_log_test_disable(struct unit_test_state *uts)
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), true));
ut_assert_nextline("%s() enabled", __func__);
ut_assert_nextline("%*s() enabled", CONFIG_LOGF_FUNC_PAD, __func__);
return 0;
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment