log: Allow padding of the function name
authorSimon Glass <sjg@chromium.org>
Mon, 5 Jul 2021 22:33:00 +0000 (16:33 -0600)
committerSimon Glass <sjg@chromium.org>
Wed, 21 Jul 2021 16:27:35 +0000 (10:27 -0600)
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>
common/Kconfig
common/log_console.c
test/log/log_test.c

index 1f0c366..2ab20a6 100644 (file)
@@ -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.
 
+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
        bool "Log output to syslog server"
        depends on NET
index 3f61774..f1dcc04 100644 (file)
@@ -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);
index f1e6750..db7170f 100644 (file)
@@ -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",
+                                          i);
                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);
        ut_assert_console_end();
        return 0;
 }
@@ -297,14 +299,14 @@ int do_log_test_disable(struct unit_test_state *uts)
 {
        ut_assertok(console_record_reset_enable());
        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));
        log_err("disabled\n");
 
        ut_assertok(log_device_set_enable(LOG_GET_DRIVER(console), true));
        log_err("enabled\n");
-       ut_assert_nextline("%s() enabled", __func__);
+       ut_assert_nextline("%*s() enabled", CONFIG_LOGF_FUNC_PAD, __func__);
        ut_assert_console_end();
        return 0;
 }