diff options
| author | Neels Hofmeyr <neels@hofmeyr.de> | 2018-01-16 01:49:37 +0100 | 
|---|---|---|
| committer | Harald Welte <laforge@gnumonks.org> | 2018-01-17 11:13:58 +0000 | 
| commit | 886e548ab080896da6760036f38b93ff97fd01a4 (patch) | |
| tree | 1968249346725279b289381290a387024bb64889 /src | |
| parent | 3cafc060142e256cf9f9ae4a6362c248c8e1fb95 (diff) | |
logging: add ability to log the log-level with API and vty
Log the log level string after the category name, if enabled.
The default behavior remains unchanged.
Change-Id: Ie6be365cfa6aeabdf115bff19bac198440c9adf1
Diffstat (limited to 'src')
| -rw-r--r-- | src/logging.c | 17 | ||||
| -rw-r--r-- | src/vty/logging_vty.c | 21 | 
2 files changed, 38 insertions, 0 deletions
| diff --git a/src/logging.c b/src/logging.c index e4f3e871..80fc7d2c 100644 --- a/src/logging.c +++ b/src/logging.c @@ -353,6 +353,12 @@ static void _output(struct log_target *target, unsigned int subsys,  				goto err;  			OSMO_SNPRINTF_RET(ret, rem, offset, len);  		} +		if (target->print_level) { +			ret = snprintf(buf + offset, rem, "%s ", log_level_str(level)); +			if (ret < 0) +				goto err; +			OSMO_SNPRINTF_RET(ret, rem, offset, len); +		}  		if (target->print_filename) {  			ret = snprintf(buf + offset, rem, "<%4.4x> %s:%d ",  					subsys, file, line); @@ -608,6 +614,17 @@ void log_set_print_category(struct log_target *target, int print_category)  	target->print_category = print_category;  } +/*! Enable or disable printing of the log level name. + *  \param[in] target Log target to be affected + *  \param[in] print_catname Enable (1) or disable (0) filenames + * + *  Print the log level name in front of every log message. + */ +void log_set_print_level(struct log_target *target, int print_level) +{ +	target->print_level = (bool)print_level; +} +  /*! Set the global log level for a given log target   *  \param[in] target Log target to be affected   *  \param[in] log_level New global log level diff --git a/src/vty/logging_vty.c b/src/vty/logging_vty.c index dc457ffc..59148225 100644 --- a/src/vty/logging_vty.c +++ b/src/vty/logging_vty.c @@ -203,6 +203,23 @@ DEFUN(logging_prnt_cat,  	return CMD_SUCCESS;  } +DEFUN(logging_prnt_level, +      logging_prnt_level_cmd, +      "logging print level (0|1)", +      LOGGING_STR "Log output settings\n" +      "Configure log message\n" +      "Don't prefix each log message\n" +      "Prefix each log message with the log level name\n") +{ +	struct log_target *tgt = osmo_log_vty2tgt(vty); + +	if (!tgt) +		return CMD_WARNING; + +	log_set_print_level(tgt, atoi(argv[0])); +	return CMD_SUCCESS; +} +  DEFUN(logging_level,        logging_level_cmd,        NULL, /* cmdstr is dynamically set in logging_vty_add_cmds(). */ @@ -734,6 +751,8 @@ static int config_write_log_single(struct vty *vty, struct log_target *tgt)  	else  		vty_out(vty, "  logging timestamp %u%s",  			tgt->print_timestamp ? 1 : 0, VTY_NEWLINE); +	if (tgt->print_level) +		vty_out(vty, "  logging print level 1%s", VTY_NEWLINE);  	/* stupid old osmo logging API uses uppercase strings... */  	osmo_str2lower(level_lower, log_level_str(tgt->loglevel)); @@ -783,6 +802,7 @@ void logging_vty_add_cmds()  	install_element_ve(&logging_prnt_timestamp_cmd);  	install_element_ve(&logging_prnt_ext_timestamp_cmd);  	install_element_ve(&logging_prnt_cat_cmd); +	install_element_ve(&logging_prnt_level_cmd);  	install_element_ve(&logging_set_category_mask_cmd);  	install_element_ve(&logging_set_category_mask_old_cmd); @@ -799,6 +819,7 @@ void logging_vty_add_cmds()  	install_element(CFG_LOG_NODE, &logging_prnt_timestamp_cmd);  	install_element(CFG_LOG_NODE, &logging_prnt_ext_timestamp_cmd);  	install_element(CFG_LOG_NODE, &logging_prnt_cat_cmd); +	install_element(CFG_LOG_NODE, &logging_prnt_level_cmd);  	install_element(CFG_LOG_NODE, &logging_level_cmd);  	install_element(CONFIG_NODE, &cfg_log_stderr_cmd); | 
