#include "lib/dnssec.h"
#include "lib/dnssec/ta.h"
#include "lib/resolve.h"
+#include "lib/log.h"
#include <arpa/inet.h>
#include <getopt.h>
the_args = &the_args_value;
args_init(the_args);
+ kr_log_init(LOG_WARNING);
int ret = parse_args(argc, argv, the_args);
if (ret >= 0) goto cleanup_args;
--- /dev/null
+/* Copyright (C) 2014-2021 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+#include <stdio.h>
+#include "lib/log.h"
+
+log_level_t kr_log_level = LOG_CRIT;
+
+void kr_log_fmt(log_level_t level, const char *fmt, ...)
+{
+ va_list args;
+ va_start(args, fmt);
+ if (level <= kr_log_level)
+ vfprintf(stdout, fmt, args);
+ va_end(args);
+}
+
+void kr_log_init(log_level_t level)
+{
+ kr_log_level = level;
+}
+
--- /dev/null
+/* Copyright (C) 2014-2021 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ */
+
+#pragma once
+
+#include <stdarg.h>
+#include "lib/defines.h"
+
+typedef enum {
+ LOG_CRIT = 0,
+ LOG_ERR,
+ LOG_WARNING,
+ LOG_NOTICE,
+ LOG_INFO,
+ LOG_DEBUG
+} log_level_t;
+
+KR_EXPORT KR_PRINTF(2) void kr_log_fmt(log_level_t level, const char *fmt, ...);
+KR_EXPORT extern log_level_t kr_log_level;
+void kr_log_init(log_level_t level);
+
+#define kr_log_debug(fmt, ...) kr_log_fmt(LOG_DEBUG, fmt, ## __VA_ARGS__)
+#define kr_log_info(fmt, ...) kr_log_fmt(LOG_INFO, fmt, ## __VA_ARGS__)
+#define kr_log_notice(fmt, ...) kr_log_fmt(LOG_NOTICE, fmt, ## __VA_ARGS__)
+#define kr_log_warning(fmt, ...) kr_log_fmt(LOG_WARNING, fmt, ## __VA_ARGS__)
+#define kr_log_error(fmt, ...) kr_log_fmt(LOG_ERR, fmt, ## __VA_ARGS__)
+#define kr_log_fatal(fmt, ...) kr_log_fmt(LOG_CRIT, fmt, ## __VA_ARGS__)
+
+#define kr_log_deprecate(fmt, ...) kr_log_fmt(LOG_WARNING, "deprecation WARNING: " fmt, ## __VA_ARGS__)
'layer/cache.c',
'layer/iterate.c',
'layer/validate.c',
+ 'log.c',
'module.c',
'resolve.c',
'rplan.c',
'generic/trie.h',
'layer.h',
'layer/iterate.h',
+ 'log.h',
'module.h',
'resolve.h',
'rplan.h',
/*
* Cleanup callbacks.
*/
-
static void kres_gnutls_log(int level, const char *message)
{
kr_log_verbose("[gnutls] (%d) %s", level, message);
#include "contrib/mempattern.h"
#include "lib/defines.h"
#include "lib/generic/array.h"
+#include "lib/log.h"
struct kr_query;
struct kr_request;
* @param[in] msg Log message. Pointer is not valid after handler returns. */
typedef void (*trace_log_f)(const struct kr_request *request, const char *msg);
-#define kr_log_info printf
-#define kr_log_error(...) fprintf(stderr, ## __VA_ARGS__)
-#define kr_log_critical(...) kr_log_error(__VA_ARGS__)
-#define kr_log_deprecate(...) fprintf(stderr, "deprecation WARNING: " __VA_ARGS__)
-
/** Assert() but always, regardless of -DNDEBUG. See also kr_assert(). */
#define kr_require(expression) do { if (!(expression)) { \
kr_fail(true, #expression, __func__, __FILE__, __LINE__); \