diff options
author | Harald Welte <laforge@gnumonks.org> | 2010-05-11 16:41:55 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-05-11 16:41:55 +0200 |
commit | e9359db5803baef9a66bb007a0fa719c2d2bb475 (patch) | |
tree | 22d8bd4fa70086b75df9c6e40b5f2134307978e7 /libosmocore | |
parent | 6f65696459cbdc3c6fb0bbcda22881deed2d4d8a (diff) | |
parent | 7638af95fd08213aef4adb3c6399975fe3621855 (diff) |
Merge commit '7638af95fd08213aef4adb3c6399975fe3621855'
Diffstat (limited to 'libosmocore')
-rw-r--r-- | libosmocore/include/osmocore/logging.h | 5 | ||||
-rw-r--r-- | libosmocore/src/logging.c | 51 |
2 files changed, 56 insertions, 0 deletions
diff --git a/libosmocore/include/osmocore/logging.h b/libosmocore/include/osmocore/logging.h index 93f18a07b..2e82959a8 100644 --- a/libosmocore/include/osmocore/logging.h +++ b/libosmocore/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); @@ -127,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/libosmocore/src/logging.c b/libosmocore/src/logging.c index 7c508771f..e72a6e204 100644 --- a/libosmocore/src/logging.c +++ b/libosmocore/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; @@ -361,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"); |