]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
logging: add get_log_group() with better API
authorTomas Krizek <tomas.krizek@nic.cz>
Wed, 7 Jul 2021 15:15:08 +0000 (17:15 +0200)
committerTomas Krizek <tomas.krizek@nic.cz>
Thu, 29 Jul 2021 09:42:32 +0000 (11:42 +0200)
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.

daemon/engine.c
lib/log.c
lib/log.h

index 2a5d7ff4bb63f9e31fa26dc513e39ae308989420..95bdc69d009d48da29c8fcea20c69af4b0552474 100644 (file)
@@ -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);
index aaca7ccd44fc61b35426d87aa2fd7ba46fda43b8..c1cc415689fc242b26b0593f77f5da0db9333193 100644 (file)
--- 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);
        }
 
index 6f92d35f1210fab59c1e40f9c4be4282b3dad2e0..e5ebe600e5edfd52403bdf3bec6b544238c59df4 100644 (file)
--- 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