mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-17 18:34:42 +00:00
log: don't show function by default
The name of the function emitting a log message may be of interest for a developer but is distracting for normal users. See the example below: try_load_entry() Booting: Debian Make the default format for log messages customizable. By default show only the message text. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
8af45b1f20
commit
3c21d7738a
6 changed files with 54 additions and 10 deletions
|
@ -39,7 +39,7 @@ static int do_log_format(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||||
const char *str = argv[1];
|
const char *str = argv[1];
|
||||||
|
|
||||||
if (!strcmp(str, "default")) {
|
if (!strcmp(str, "default")) {
|
||||||
gd->log_fmt = LOGF_DEFAULT;
|
gd->log_fmt = log_get_default_format();
|
||||||
} else if (!strcmp(str, "all")) {
|
} else if (!strcmp(str, "all")) {
|
||||||
gd->log_fmt = LOGF_ALL;
|
gd->log_fmt = LOGF_ALL;
|
||||||
} else {
|
} else {
|
||||||
|
@ -139,7 +139,7 @@ static char log_help_text[] =
|
||||||
"log format <fmt> - set log output format. <fmt> is a string where\n"
|
"log format <fmt> - set log output format. <fmt> is a string where\n"
|
||||||
"\teach letter indicates something that should be displayed:\n"
|
"\teach letter indicates something that should be displayed:\n"
|
||||||
"\tc=category, l=level, F=file, L=line number, f=function, m=msg\n"
|
"\tc=category, l=level, F=file, L=line number, f=function, m=msg\n"
|
||||||
"\tor 'default', equivalent to 'fm', or 'all' for all\n"
|
"\tor 'default', or 'all' for all\n"
|
||||||
"log rec <category> <level> <file> <line> <func> <message> - "
|
"log rec <category> <level> <file> <line> <func> <message> - "
|
||||||
"output a log record"
|
"output a log record"
|
||||||
;
|
;
|
||||||
|
|
|
@ -699,6 +699,24 @@ config LOG_CONSOLE
|
||||||
log message is shown - other details like level, category, file and
|
log message is shown - other details like level, category, file and
|
||||||
line number are omitted.
|
line number are omitted.
|
||||||
|
|
||||||
|
config LOGF_FILE
|
||||||
|
bool "Show source file name in log messages by default"
|
||||||
|
help
|
||||||
|
Show the source file name in log messages by default. This value
|
||||||
|
can be overridden using the 'log format' command.
|
||||||
|
|
||||||
|
config LOGF_LINE
|
||||||
|
bool "Show source line number in log messages by default"
|
||||||
|
help
|
||||||
|
Show the source line number in log messages by default. This value
|
||||||
|
can be overridden using the 'log format' command.
|
||||||
|
|
||||||
|
config LOGF_FUNC
|
||||||
|
bool "Show function name in log messages by default"
|
||||||
|
help
|
||||||
|
Show the function name in log messages by default. This value can
|
||||||
|
be overridden using the 'log format' command.
|
||||||
|
|
||||||
config LOG_SYSLOG
|
config LOG_SYSLOG
|
||||||
bool "Log output to syslog server"
|
bool "Log output to syslog server"
|
||||||
depends on NET
|
depends on NET
|
||||||
|
|
|
@ -321,7 +321,7 @@ int log_init(void)
|
||||||
gd->flags |= GD_FLG_LOG_READY;
|
gd->flags |= GD_FLG_LOG_READY;
|
||||||
if (!gd->default_log_level)
|
if (!gd->default_log_level)
|
||||||
gd->default_log_level = CONFIG_LOG_DEFAULT_LEVEL;
|
gd->default_log_level = CONFIG_LOG_DEFAULT_LEVEL;
|
||||||
gd->log_fmt = LOGF_DEFAULT;
|
gd->log_fmt = log_get_default_format();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <linker_lists.h>
|
#include <linker_lists.h>
|
||||||
#include <dm/uclass-id.h>
|
#include <dm/uclass-id.h>
|
||||||
|
#include <linux/bitops.h>
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
|
|
||||||
struct cmd_tbl;
|
struct cmd_tbl;
|
||||||
|
@ -411,7 +412,6 @@ enum log_fmt {
|
||||||
LOGF_MSG,
|
LOGF_MSG,
|
||||||
|
|
||||||
LOGF_COUNT,
|
LOGF_COUNT,
|
||||||
LOGF_DEFAULT = (1 << LOGF_FUNC) | (1 << LOGF_MSG),
|
|
||||||
LOGF_ALL = 0x3f,
|
LOGF_ALL = 0x3f,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -460,4 +460,20 @@ static inline int log_init(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* log_get_default_format() - get default log format
|
||||||
|
*
|
||||||
|
* The default log format is configurable via
|
||||||
|
* CONFIG_LOGF_FILE, CONFIG_LOGF_LINE, CONFIG_LOGF_FUNC.
|
||||||
|
*
|
||||||
|
* Return: default log format
|
||||||
|
*/
|
||||||
|
static inline int log_get_default_format(void)
|
||||||
|
{
|
||||||
|
return BIT(LOGF_MSG) |
|
||||||
|
(IS_ENABLED(CONFIG_LOGF_FILE) ? BIT(LOGF_FILE) : 0) |
|
||||||
|
(IS_ENABLED(CONFIG_LOGF_LINE) ? BIT(LOGF_LINE) : 0) |
|
||||||
|
(IS_ENABLED(CONFIG_LOGF_FUNC) ? BIT(LOGF_FUNC) : 0);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
|
#define LOGF_TEST (BIT(LOGF_FUNC) | BIT(LOGF_MSG))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct sb_log_env - private data for sandbox ethernet driver
|
* struct sb_log_env - private data for sandbox ethernet driver
|
||||||
*
|
*
|
||||||
|
@ -102,7 +104,7 @@ static int log_test_syslog_err(struct unit_test_state *uts)
|
||||||
int old_log_level = gd->default_log_level;
|
int old_log_level = gd->default_log_level;
|
||||||
struct sb_log_env env;
|
struct sb_log_env env;
|
||||||
|
|
||||||
gd->log_fmt = LOGF_DEFAULT;
|
gd->log_fmt = LOGF_TEST;
|
||||||
gd->default_log_level = LOGL_INFO;
|
gd->default_log_level = LOGL_INFO;
|
||||||
env_set("ethact", "eth@10002000");
|
env_set("ethact", "eth@10002000");
|
||||||
env_set("log_hostname", "sandbox");
|
env_set("log_hostname", "sandbox");
|
||||||
|
@ -116,6 +118,7 @@ static int log_test_syslog_err(struct unit_test_state *uts)
|
||||||
/* Check that the callback function was called */
|
/* Check that the callback function was called */
|
||||||
sandbox_eth_set_tx_handler(0, NULL);
|
sandbox_eth_set_tx_handler(0, NULL);
|
||||||
gd->default_log_level = old_log_level;
|
gd->default_log_level = old_log_level;
|
||||||
|
gd->log_fmt = log_get_default_format();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -132,7 +135,7 @@ static int log_test_syslog_warning(struct unit_test_state *uts)
|
||||||
int old_log_level = gd->default_log_level;
|
int old_log_level = gd->default_log_level;
|
||||||
struct sb_log_env env;
|
struct sb_log_env env;
|
||||||
|
|
||||||
gd->log_fmt = LOGF_DEFAULT;
|
gd->log_fmt = LOGF_TEST;
|
||||||
gd->default_log_level = LOGL_INFO;
|
gd->default_log_level = LOGL_INFO;
|
||||||
env_set("ethact", "eth@10002000");
|
env_set("ethact", "eth@10002000");
|
||||||
env_set("log_hostname", "sandbox");
|
env_set("log_hostname", "sandbox");
|
||||||
|
@ -147,6 +150,7 @@ static int log_test_syslog_warning(struct unit_test_state *uts)
|
||||||
/* Check that the callback function was called */
|
/* Check that the callback function was called */
|
||||||
ut_assertnull(env.expected);
|
ut_assertnull(env.expected);
|
||||||
gd->default_log_level = old_log_level;
|
gd->default_log_level = old_log_level;
|
||||||
|
gd->log_fmt = log_get_default_format();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -163,7 +167,7 @@ static int log_test_syslog_notice(struct unit_test_state *uts)
|
||||||
int old_log_level = gd->default_log_level;
|
int old_log_level = gd->default_log_level;
|
||||||
struct sb_log_env env;
|
struct sb_log_env env;
|
||||||
|
|
||||||
gd->log_fmt = LOGF_DEFAULT;
|
gd->log_fmt = LOGF_TEST;
|
||||||
gd->default_log_level = LOGL_INFO;
|
gd->default_log_level = LOGL_INFO;
|
||||||
env_set("ethact", "eth@10002000");
|
env_set("ethact", "eth@10002000");
|
||||||
env_set("log_hostname", "sandbox");
|
env_set("log_hostname", "sandbox");
|
||||||
|
@ -178,6 +182,7 @@ static int log_test_syslog_notice(struct unit_test_state *uts)
|
||||||
/* Check that the callback function was called */
|
/* Check that the callback function was called */
|
||||||
ut_assertnull(env.expected);
|
ut_assertnull(env.expected);
|
||||||
gd->default_log_level = old_log_level;
|
gd->default_log_level = old_log_level;
|
||||||
|
gd->log_fmt = log_get_default_format();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -194,7 +199,7 @@ static int log_test_syslog_info(struct unit_test_state *uts)
|
||||||
int old_log_level = gd->default_log_level;
|
int old_log_level = gd->default_log_level;
|
||||||
struct sb_log_env env;
|
struct sb_log_env env;
|
||||||
|
|
||||||
gd->log_fmt = LOGF_DEFAULT;
|
gd->log_fmt = LOGF_TEST;
|
||||||
gd->default_log_level = LOGL_INFO;
|
gd->default_log_level = LOGL_INFO;
|
||||||
env_set("ethact", "eth@10002000");
|
env_set("ethact", "eth@10002000");
|
||||||
env_set("log_hostname", "sandbox");
|
env_set("log_hostname", "sandbox");
|
||||||
|
@ -209,6 +214,7 @@ static int log_test_syslog_info(struct unit_test_state *uts)
|
||||||
/* Check that the callback function was called */
|
/* Check that the callback function was called */
|
||||||
ut_assertnull(env.expected);
|
ut_assertnull(env.expected);
|
||||||
gd->default_log_level = old_log_level;
|
gd->default_log_level = old_log_level;
|
||||||
|
gd->log_fmt = log_get_default_format();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -225,7 +231,7 @@ static int log_test_syslog_debug(struct unit_test_state *uts)
|
||||||
int old_log_level = gd->default_log_level;
|
int old_log_level = gd->default_log_level;
|
||||||
struct sb_log_env env;
|
struct sb_log_env env;
|
||||||
|
|
||||||
gd->log_fmt = LOGF_DEFAULT;
|
gd->log_fmt = LOGF_TEST;
|
||||||
gd->default_log_level = LOGL_DEBUG;
|
gd->default_log_level = LOGL_DEBUG;
|
||||||
env_set("ethact", "eth@10002000");
|
env_set("ethact", "eth@10002000");
|
||||||
env_set("log_hostname", "sandbox");
|
env_set("log_hostname", "sandbox");
|
||||||
|
@ -240,6 +246,7 @@ static int log_test_syslog_debug(struct unit_test_state *uts)
|
||||||
/* Check that the callback function was called */
|
/* Check that the callback function was called */
|
||||||
ut_assertnull(env.expected);
|
ut_assertnull(env.expected);
|
||||||
gd->default_log_level = old_log_level;
|
gd->default_log_level = old_log_level;
|
||||||
|
gd->log_fmt = log_get_default_format();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -259,7 +266,7 @@ static int log_test_syslog_nodebug(struct unit_test_state *uts)
|
||||||
int old_log_level = gd->default_log_level;
|
int old_log_level = gd->default_log_level;
|
||||||
struct sb_log_env env;
|
struct sb_log_env env;
|
||||||
|
|
||||||
gd->log_fmt = LOGF_DEFAULT;
|
gd->log_fmt = LOGF_TEST;
|
||||||
gd->default_log_level = LOGL_INFO;
|
gd->default_log_level = LOGL_INFO;
|
||||||
env_set("ethact", "eth@10002000");
|
env_set("ethact", "eth@10002000");
|
||||||
env_set("log_hostname", "sandbox");
|
env_set("log_hostname", "sandbox");
|
||||||
|
@ -274,6 +281,7 @@ static int log_test_syslog_nodebug(struct unit_test_state *uts)
|
||||||
/* Check that the callback function was not called */
|
/* Check that the callback function was not called */
|
||||||
ut_assertnonnull(env.expected);
|
ut_assertnonnull(env.expected);
|
||||||
gd->default_log_level = old_log_level;
|
gd->default_log_level = old_log_level;
|
||||||
|
gd->log_fmt = log_get_default_format();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,8 @@ def test_log(u_boot_console):
|
||||||
Returns:
|
Returns:
|
||||||
iterator containing the lines output from the command
|
iterator containing the lines output from the command
|
||||||
"""
|
"""
|
||||||
|
output = u_boot_console.run_command('log format fm')
|
||||||
|
assert output == ''
|
||||||
with cons.log.section('basic'):
|
with cons.log.section('basic'):
|
||||||
output = u_boot_console.run_command('log test %d' % testnum)
|
output = u_boot_console.run_command('log test %d' % testnum)
|
||||||
split = output.replace('\r', '').splitlines()
|
split = output.replace('\r', '').splitlines()
|
||||||
|
|
Loading…
Add table
Reference in a new issue