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
					
				|  | @ -39,7 +39,7 @@ static int do_log_format(struct cmd_tbl *cmdtp, int flag, int argc, | |||
| 		const char *str = argv[1]; | ||||
| 
 | ||||
| 		if (!strcmp(str, "default")) { | ||||
| 			gd->log_fmt = LOGF_DEFAULT; | ||||
| 			gd->log_fmt = log_get_default_format(); | ||||
| 		} else if (!strcmp(str, "all")) { | ||||
| 			gd->log_fmt = LOGF_ALL; | ||||
| 		} else { | ||||
|  | @ -139,7 +139,7 @@ static char log_help_text[] = | |||
| 	"log format <fmt> - set log output format. <fmt> is a string where\n" | ||||
| 	"\teach letter indicates something that should be displayed:\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> - " | ||||
| 		"output a log record" | ||||
| 	; | ||||
|  |  | |||
|  | @ -699,6 +699,24 @@ config LOG_CONSOLE | |||
| 	  log message is shown - other details like level, category, file and | ||||
| 	  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 | ||||
| 	bool "Log output to syslog server" | ||||
| 	depends on NET | ||||
|  |  | |||
|  | @ -321,7 +321,7 @@ int log_init(void) | |||
| 	gd->flags |= GD_FLG_LOG_READY; | ||||
| 	if (!gd->default_log_level) | ||||
| 		gd->default_log_level = CONFIG_LOG_DEFAULT_LEVEL; | ||||
| 	gd->log_fmt = LOGF_DEFAULT; | ||||
| 	gd->log_fmt = log_get_default_format(); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
|  |  | |||
|  | @ -12,6 +12,7 @@ | |||
| #include <stdio.h> | ||||
| #include <linker_lists.h> | ||||
| #include <dm/uclass-id.h> | ||||
| #include <linux/bitops.h> | ||||
| #include <linux/list.h> | ||||
| 
 | ||||
| struct cmd_tbl; | ||||
|  | @ -411,7 +412,6 @@ enum log_fmt { | |||
| 	LOGF_MSG, | ||||
| 
 | ||||
| 	LOGF_COUNT, | ||||
| 	LOGF_DEFAULT = (1 << LOGF_FUNC) | (1 << LOGF_MSG), | ||||
| 	LOGF_ALL = 0x3f, | ||||
| }; | ||||
| 
 | ||||
|  | @ -460,4 +460,20 @@ static inline int log_init(void) | |||
| } | ||||
| #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 | ||||
|  |  | |||
|  | @ -21,6 +21,8 @@ | |||
| 
 | ||||
| DECLARE_GLOBAL_DATA_PTR; | ||||
| 
 | ||||
| #define LOGF_TEST (BIT(LOGF_FUNC) | BIT(LOGF_MSG)) | ||||
| 
 | ||||
| /**
 | ||||
|  * 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; | ||||
| 	struct sb_log_env env; | ||||
| 
 | ||||
| 	gd->log_fmt = LOGF_DEFAULT; | ||||
| 	gd->log_fmt = LOGF_TEST; | ||||
| 	gd->default_log_level = LOGL_INFO; | ||||
| 	env_set("ethact", "eth@10002000"); | ||||
| 	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 */ | ||||
| 	sandbox_eth_set_tx_handler(0, NULL); | ||||
| 	gd->default_log_level = old_log_level; | ||||
| 	gd->log_fmt = log_get_default_format(); | ||||
| 
 | ||||
| 	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; | ||||
| 	struct sb_log_env env; | ||||
| 
 | ||||
| 	gd->log_fmt = LOGF_DEFAULT; | ||||
| 	gd->log_fmt = LOGF_TEST; | ||||
| 	gd->default_log_level = LOGL_INFO; | ||||
| 	env_set("ethact", "eth@10002000"); | ||||
| 	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 */ | ||||
| 	ut_assertnull(env.expected); | ||||
| 	gd->default_log_level = old_log_level; | ||||
| 	gd->log_fmt = log_get_default_format(); | ||||
| 
 | ||||
| 	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; | ||||
| 	struct sb_log_env env; | ||||
| 
 | ||||
| 	gd->log_fmt = LOGF_DEFAULT; | ||||
| 	gd->log_fmt = LOGF_TEST; | ||||
| 	gd->default_log_level = LOGL_INFO; | ||||
| 	env_set("ethact", "eth@10002000"); | ||||
| 	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 */ | ||||
| 	ut_assertnull(env.expected); | ||||
| 	gd->default_log_level = old_log_level; | ||||
| 	gd->log_fmt = log_get_default_format(); | ||||
| 
 | ||||
| 	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; | ||||
| 	struct sb_log_env env; | ||||
| 
 | ||||
| 	gd->log_fmt = LOGF_DEFAULT; | ||||
| 	gd->log_fmt = LOGF_TEST; | ||||
| 	gd->default_log_level = LOGL_INFO; | ||||
| 	env_set("ethact", "eth@10002000"); | ||||
| 	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 */ | ||||
| 	ut_assertnull(env.expected); | ||||
| 	gd->default_log_level = old_log_level; | ||||
| 	gd->log_fmt = log_get_default_format(); | ||||
| 
 | ||||
| 	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; | ||||
| 	struct sb_log_env env; | ||||
| 
 | ||||
| 	gd->log_fmt = LOGF_DEFAULT; | ||||
| 	gd->log_fmt = LOGF_TEST; | ||||
| 	gd->default_log_level = LOGL_DEBUG; | ||||
| 	env_set("ethact", "eth@10002000"); | ||||
| 	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 */ | ||||
| 	ut_assertnull(env.expected); | ||||
| 	gd->default_log_level = old_log_level; | ||||
| 	gd->log_fmt = log_get_default_format(); | ||||
| 
 | ||||
| 	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; | ||||
| 	struct sb_log_env env; | ||||
| 
 | ||||
| 	gd->log_fmt = LOGF_DEFAULT; | ||||
| 	gd->log_fmt = LOGF_TEST; | ||||
| 	gd->default_log_level = LOGL_INFO; | ||||
| 	env_set("ethact", "eth@10002000"); | ||||
| 	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 */ | ||||
| 	ut_assertnonnull(env.expected); | ||||
| 	gd->default_log_level = old_log_level; | ||||
| 	gd->log_fmt = log_get_default_format(); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
|  |  | |||
|  | @ -39,6 +39,8 @@ def test_log(u_boot_console): | |||
|         Returns: | ||||
|             iterator containing the lines output from the command | ||||
|         """ | ||||
|         output = u_boot_console.run_command('log format fm') | ||||
|         assert output == '' | ||||
|         with cons.log.section('basic'): | ||||
|            output = u_boot_console.run_command('log test %d' % testnum) | ||||
|         split = output.replace('\r', '').splitlines() | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue