mirror of https://gerrit.osmocom.org/libosmocore
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
This commit is contained in:
parent
3cafc06014
commit
886e548ab0
|
@ -298,6 +298,9 @@ struct log_target {
|
|||
void (*raw_output)(struct log_target *target, int subsys,
|
||||
unsigned int level, const char *file, int line,
|
||||
int cont, const char *format, va_list ap);
|
||||
|
||||
/* Should the log level be printed? */
|
||||
bool print_level;
|
||||
};
|
||||
|
||||
/* use the above macros */
|
||||
|
@ -320,6 +323,7 @@ void log_set_print_extended_timestamp(struct log_target *target, int);
|
|||
void log_set_print_timestamp(struct log_target *target, int);
|
||||
void log_set_print_filename(struct log_target *target, int);
|
||||
void log_set_print_category(struct log_target *target, int);
|
||||
void log_set_print_level(struct log_target *target, int);
|
||||
void log_set_log_level(struct log_target *target, int log_level);
|
||||
void log_parse_category_mask(struct log_target *target, const char* mask);
|
||||
const char* log_category_name(int subsys);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue