From 9ac2225ff43e7ec74ec6a629383899f3b6e78d2c Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Tue, 11 May 2010 11:19:40 +0200 Subject: logging: introuduce log_level_str() to obtain the name of a log level --- include/osmocore/logging.h | 1 + src/logging.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/include/osmocore/logging.h b/include/osmocore/logging.h index 93f18a07b..b9e0c8fd0 100644 --- a/include/osmocore/logging.h +++ b/include/osmocore/logging.h @@ -117,6 +117,7 @@ void log_set_print_timestamp(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); int log_parse_level(const char *lvl); +const char *log_level_str(unsigned int lvl); int log_parse_category(const char *category); void log_set_category_filter(struct log_target *target, int category, int enable, int level); diff --git a/src/logging.c b/src/logging.c index 7c508771f..e5d459a07 100644 --- a/src/logging.c +++ b/src/logging.c @@ -58,6 +58,11 @@ int log_parse_level(const char *lvl) return get_string_value(loglevel_strs, lvl); } +const char *log_level_str(unsigned int lvl) +{ + return get_value_string(loglevel_strs, lvl); +} + int log_parse_category(const char *category) { int i; -- cgit v1.2.3 From 7638af95fd08213aef4adb3c6399975fe3621855 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Tue, 11 May 2010 16:39:22 +0200 Subject: logging: add log_vty_{level,category}_string() --- include/osmocore/logging.h | 4 ++++ src/logging.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/include/osmocore/logging.h b/include/osmocore/logging.h index b9e0c8fd0..2e82959a8 100644 --- a/include/osmocore/logging.h +++ b/include/osmocore/logging.h @@ -128,4 +128,8 @@ struct log_target *log_target_create_stderr(void); void log_add_target(struct log_target *target); void log_del_target(struct log_target *target); +/* Gernerate command argument strings for VTY use */ +const char *log_vty_category_string(struct log_info *info); +const char *log_vty_level_string(struct log_info *info); + #endif /* _OSMOCORE_LOGGING_H */ diff --git a/src/logging.c b/src/logging.c index e5d459a07..e72a6e204 100644 --- a/src/logging.c +++ b/src/logging.c @@ -366,6 +366,52 @@ struct log_target *log_target_create_stderr(void) #endif /* stderr */ } +const char *log_vty_level_string(struct log_info *info) +{ + const struct value_string *vs; + unsigned int len = 3; /* ()\0 */ + char *str; + + for (vs = loglevel_strs; vs->value || vs->str; vs++) + len += strlen(vs->str) + 1; + + str = talloc_zero_size(NULL, len); + if (!str) + return NULL; + + str[0] = '('; + for (vs = loglevel_strs; vs->value || vs->str; vs++) { + strcat(str, vs->str); + strcat(str, "|"); + } + str[strlen(str)-1] = ')'; + + return str; +} + +const char *log_vty_category_string(struct log_info *info) +{ + unsigned int len = 3; /* "()\0" */ + unsigned int i; + char *str; + + for (i = 0; i < info->num_cat; i++) + len += strlen(info->cat[i].name) + 1; + + str = talloc_zero_size(NULL, len); + if (!str) + return NULL; + + str[0] = '('; + for (i = 0; i < info->num_cat; i++) { + strcat(str, info->cat[i].name+1); + strcat(str, "|"); + } + str[strlen(str)-1] = ')'; + + return str; +} + void log_init(const struct log_info *cat) { tall_log_ctx = talloc_named_const(NULL, 1, "logging"); -- cgit v1.2.3