From: Tomas Krizek Date: Wed, 7 Jul 2021 15:15:08 +0000 (+0200) Subject: logging: add get_log_group() with better API X-Git-Tag: v5.4.0~2^2~41 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0f53aaf6cab4107e978c44e575e6ee7723baff1f;p=thirdparty%2Fknot-resolver.git logging: add get_log_group() with better API The function returns a table where key is the group name and the value is either true (when logging selected group), or nil (when group isn't selected). This replaces the list_log_group() which didn't really work. --- diff --git a/daemon/engine.c b/daemon/engine.c index 2a5d7ff4b..95bdc69d0 100644 --- a/daemon/engine.c +++ b/daemon/engine.c @@ -215,22 +215,22 @@ static int l_del_log_group(lua_State *L) return handle_log_groups(L, kr_log_del_group); } -static int l_list_log_group(lua_State *L) +static int l_get_log_group(lua_State *L) { - int grp_b = 1; - char *grp_name = kr_log_grp2name(1 << grp_b); + int grp = 1; + char *name = kr_log_grp2name(grp); - printf("groups: \n\t"); - while (grp_name) { - printf("%s%s, ", group_is_set(1 << grp_b) ? "*":"", grp_name); - if (grp_b%8 == 0) - printf("\n\t"); - ++grp_b; - grp_name = kr_log_grp2name(1 << grp_b); + lua_newtable(L); + while (name) { + if (kr_log_group_is_set(grp)) { + lua_pushboolean(L, true); + lua_setfield(L, -2, name); + } + ++grp; + name = kr_log_grp2name(grp); } - printf("\n* = groups logged in debug level\n"); - return 0; + return 1; } char *engine_get_hostname(struct engine *engine) { @@ -521,8 +521,8 @@ static int init_state(struct engine *engine) lua_setglobal(engine->L, "add_log_group"); lua_pushcfunction(engine->L, l_del_log_group); lua_setglobal(engine->L, "del_log_group"); - lua_pushcfunction(engine->L, l_list_log_group); - lua_setglobal(engine->L, "list_log_group"); + lua_pushcfunction(engine->L, l_get_log_group); + lua_setglobal(engine->L, "get_log_group"); lua_pushcfunction(engine->L, l_setuser); lua_setglobal(engine->L, "user"); lua_pushcfunction(engine->L, l_hint_root_file); diff --git a/lib/log.c b/lib/log.c index aaca7ccd4..c1cc41568 100644 --- a/lib/log.c +++ b/lib/log.c @@ -80,7 +80,7 @@ syslog_code_t prioritynames[] = { }; #endif -int group_is_set(log_groups_t group) +int kr_log_group_is_set(log_groups_t group) { return kr_log_groups & (1ULL << group); } @@ -90,11 +90,11 @@ void kr_log_fmt(log_groups_t group, log_level_t level, const char *file, { va_list args; - if (!(KR_LOG_LEVEL_IS(level) || group_is_set(group))) + if (!(KR_LOG_LEVEL_IS(level) || kr_log_group_is_set(group))) return; if (kr_log_target == LOG_TARGET_SYSLOG) { - if (group_is_set(group)) + if (kr_log_group_is_set(group)) setlogmask(LOG_UPTO(LOG_DEBUG)); va_start(args, fmt); @@ -109,7 +109,7 @@ void kr_log_fmt(log_groups_t group, log_level_t level, const char *file, #endif va_end(args); - if (group_is_set(group)) + if (kr_log_group_is_set(group)) setlogmask(LOG_UPTO(kr_log_level)); } else { @@ -192,7 +192,7 @@ int kr_log_level_set(log_level_t level) /* gnutls logs messages related to our TLS and also libdnssec, * and the logging is set up in a global way only */ - if (KR_LOG_LEVEL_IS(LOG_DEBUG) || group_is_set(LOG_GRP_TLS) || group_is_set(LOG_GRP_TLSCLIENT)) { + if (KR_LOG_LEVEL_IS(LOG_DEBUG) || kr_log_group_is_set(LOG_GRP_TLS) || kr_log_group_is_set(LOG_GRP_TLSCLIENT)) { gnutls_global_set_log_function(kres_gnutls_log); } diff --git a/lib/log.h b/lib/log.h index 6f92d35f1..e5ebe600e 100644 --- a/lib/log.h +++ b/lib/log.h @@ -115,7 +115,7 @@ enum kr_log_groups_type { KR_EXPORT extern log_groups_t kr_log_groups; KR_EXPORT -int group_is_set(log_groups_t group); +int kr_log_group_is_set(log_groups_t group); KR_EXPORT void kr_log_add_group(log_groups_t group); KR_EXPORT