]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
log: fix journal metadata
authorLukáš Ježek <lukas.jezek@nic.cz>
Tue, 25 May 2021 14:15:44 +0000 (16:15 +0200)
committerTomas Krizek <tomas.krizek@nic.cz>
Thu, 29 Jul 2021 09:40:49 +0000 (11:40 +0200)
daemon/main.c
lib/log.c
lib/log.h

index cfff0d0cb52dc5e8325d7fdc7738a9c9bc52b7b0..be70ac8999a244174274c44a9521f3ec3f5a6a53 100644 (file)
@@ -269,7 +269,7 @@ static int parse_args(int argc, char **argv, struct args *args)
                        args->quiet = true;
                        break;
                case 'V':
-                       kr_log_info("%s, version %s\n", "Knot Resolver", PACKAGE_VERSION);
+                       kr_log_info(LOG_GRP_SYSTEM, "%s, version %s\n", "Knot Resolver", PACKAGE_VERSION);
                        return EXIT_SUCCESS;
                case 'h':
                case '?':
index 29d903b31290c46e15bf9fbf1445902bb24d0f52..72ce0294083bb9f92b3a6073bd8f317189dfd9ef 100644 (file)
--- a/lib/log.c
+++ b/lib/log.c
@@ -39,10 +39,14 @@ int group_is_set(log_groups_t group)
        return kr_log_groups & (group);
 }
 
-void kr_log_fmt(log_groups_t group, log_level_t level, const char *fmt, ...)
+void kr_log_fmt(log_groups_t group, log_level_t level, const char *file,
+               const char *line, const char *func, const char *fmt, ...)
 {
        va_list args;
 
+       if (!(KR_LOG_LEVEL_IS(level) || group_is_set(group)))
+               return;
+
        if (kr_log_target == LOG_TARGET_SYSLOG) {
                if (group_is_set(group))
                        setlogmask(LOG_UPTO(LOG_DEBUG));
@@ -50,15 +54,7 @@ void kr_log_fmt(log_groups_t group, log_level_t level, const char *fmt, ...)
                va_start(args, fmt);
 #if ENABLE_LIBSYSTEMD
                if (use_journal) {
-                       char *code_line = NULL;
-                       if (asprintf(&code_line, "%d", __LINE__) == -1) {
-                               sd_journal_printv(level, fmt, args);
-                       } else {
-                               sd_journal_printv_with_location(level,
-                                               __FILE__, code_line, __func__,
-                                               fmt, args);
-                               free(code_line);
-                       }
+                       sd_journal_printv_with_location(level, file, line, func, fmt, args);
                } else {
                        vsyslog(level, fmt, args);
                }
@@ -70,8 +66,6 @@ void kr_log_fmt(log_groups_t group, log_level_t level, const char *fmt, ...)
                if (group_is_set(group))
                        setlogmask(LOG_UPTO(kr_log_level));
        } else {
-               if (!(KR_LOG_LEVEL_IS(level) || group_is_set(group)))
-                       return;
 
                FILE *stream;
                switch(kr_log_target) {
@@ -123,7 +117,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)) {
+       if (KR_LOG_LEVEL_IS(LOG_DEBUG) || group_is_set(LOG_GRP_TLS) || group_is_set(LOG_GRP_TLSCLIENT)) {
                gnutls_global_set_log_function(kres_gnutls_log);
        }
 
index 4f624b580a3016c2c85b3e6255166d3500d9ae82..b5f76df56b5e986e442a052e92a95c8152ad0627 100644 (file)
--- a/lib/log.h
+++ b/lib/log.h
@@ -53,8 +53,9 @@ KR_EXPORT
 extern log_level_t kr_log_level;
 KR_EXPORT
 extern log_target_t kr_log_target;
-KR_EXPORT KR_PRINTF(3)
-void kr_log_fmt(log_groups_t group, log_level_t level, const char *fmt, ...);
+KR_EXPORT KR_PRINTF(6)
+void kr_log_fmt(log_groups_t group, log_level_t level, const char *file, const char *line,
+               const char *func, const char *fmt, ...);
 KR_EXPORT
 int kr_log_level_set(log_level_t level);
 KR_EXPORT
@@ -62,14 +63,25 @@ log_level_t kr_log_level_get(void);
 KR_EXPORT
 void kr_log_init(log_level_t level, log_target_t target);
 
-#define kr_log_debug(grp, fmt, ...) kr_log_fmt(grp, LOG_DEBUG, fmt, ## __VA_ARGS__)
-#define kr_log_info(grp, fmt, ...) kr_log_fmt(grp, LOG_INFO, fmt, ## __VA_ARGS__)
-#define kr_log_notice(grp, fmt, ...) kr_log_fmt(grp, LOG_NOTICE, fmt, ## __VA_ARGS__)
-#define kr_log_warning(grp, fmt, ...) kr_log_fmt(grp, LOG_WARNING, fmt, ## __VA_ARGS__)
-#define kr_log_error(grp, fmt, ...) kr_log_fmt(grp, LOG_ERR, fmt, ## __VA_ARGS__)
-#define kr_log_fatal(grp, fmt, ...) kr_log_fmt(grp, LOG_CRIT, fmt, ## __VA_ARGS__)
-
-#define kr_log_deprecate(grp, fmt, ...) kr_log_fmt(grp, LOG_WARNING, "deprecation WARNING: " fmt, ## __VA_ARGS__)
+#define TO_STR_A(x) #x
+#define TO_STR(x) TO_STR_A(x)
+#define SD_JOURNAL_METADATA "CODE_FILE=" __FILE__, "CODE_LINE=" TO_STR(__LINE__), ""
+
+#define kr_log_debug(grp, fmt, ...) \
+       kr_log_fmt(grp, LOG_DEBUG, SD_JOURNAL_METADATA, fmt, ## __VA_ARGS__)
+#define kr_log_info(grp, fmt, ...) \
+       kr_log_fmt(grp, LOG_INFO, SD_JOURNAL_METADATA, fmt, ## __VA_ARGS__)
+#define kr_log_notice(grp, fmt, ...) \
+       kr_log_fmt(grp, LOG_NOTICE, SD_JOURNAL_METADATA, fmt, ## __VA_ARGS__)
+#define kr_log_warning(grp, fmt, ...) \
+       kr_log_fmt(grp, LOG_WARNING, SD_JOURNAL_METADATA, fmt, ## __VA_ARGS__)
+#define kr_log_error(grp, fmt, ...) \
+       kr_log_fmt(grp, LOG_ERR, SD_JOURNAL_METADATA, fmt, ## __VA_ARGS__)
+#define kr_log_fatal(grp, fmt, ...) \
+       kr_log_fmt(grp, LOG_CRIT, SD_JOURNAL_METADATA, fmt, ## __VA_ARGS__)
+
+#define kr_log_deprecate(grp, fmt, ...) \
+       kr_log_fmt(grp, LOG_WARNING,SD_JOURNAL_METADATA, "deprecation WARNING: " fmt, ## __VA_ARGS__)
 
 #define KR_LOG_LEVEL_IS(exp) ((kr_log_level >= (exp)) ? true : false)