diff --git a/doc/reference.texi b/doc/reference.texi
index f1377634f5c73b6f37024c5ec7d4f967629aa971..bb2bf391849e9e6d3bbac159f60d71e072d41d9f 100644
--- a/doc/reference.texi
+++ b/doc/reference.texi
@@ -853,6 +853,7 @@ Knot DNS allows user to choose from these logging categories:
 @itemize
 @item @emph{server} - Messages related to general operation of the server.
 @item @emph{zone} - Messages related to zones, zone parsing and loading.
+@item @emph{answering} - Messages regarding query processing and response creation.
 @item @emph{any} - All categories.
 @end itemize
 
diff --git a/src/common/log.h b/src/common/log.h
index 36e0a1b4f7ef70d0072a8f764bccb8abf19c8431..639957c4c59ae61707da16d23907e8160fbda228 100644
--- a/src/common/log.h
+++ b/src/common/log.h
@@ -53,7 +53,8 @@ typedef enum {
 
 /*! \brief Log sources (max. LOG_SRC_BITS bits). */
 typedef enum {
-	LOG_SERVER = 1, /*!< Server module. */
+	LOG_SERVER = 0, /*!< Server module. */
+	LOG_ANSWER = 1, /*!< Query answering module. */
 	LOG_ZONE   = 2, /*!< Zone manipulation module. */
 	LOG_ANY    = 7  /*!< Any module. */
 } logsrc_t;
@@ -188,6 +189,13 @@ void hex_log(int source, const char *data, int length);
 #define log_server_info(msg...)      log_msg(LOG_SERVER, LOG_INFO, msg)
 #define log_server_debug(msg...)     log_msg(LOG_SERVER, LOG_DEBUG, msg)
 
+#define log_answer_fatal(msg...)     log_msg(LOG_ANSWER, LOG_FATAL, msg)
+#define log_answer_error(msg...)     log_msg(LOG_ANSWER, LOG_ERR, msg)
+#define log_answer_warning(msg...)   log_msg(LOG_ANSWER, LOG_WARNING, msg)
+#define log_answer_notice(msg...)    log_msg(LOG_ANSWER, LOG_NOTICE, msg)
+#define log_answer_info(msg...)      log_msg(LOG_ANSWER, LOG_INFO, msg)
+#define log_answer_debug(msg...)     log_msg(LOG_ANSWER, LOG_DEBUG, msg)
+
 #define log_zone_fatal(msg...)       log_msg(LOG_ZONE, LOG_FATAL, msg)
 #define log_zone_error(msg...)       log_msg(LOG_ZONE, LOG_ERR, msg)
 #define log_zone_warning(msg...)     log_msg(LOG_ZONE, LOG_WARNING, msg)
diff --git a/src/knot/conf/cf-lex.l b/src/knot/conf/cf-lex.l
index 722a0ebe96e0cef81894e83ef7f25bd19db32815..5a539179ad1ddbcd81f7a882e950dbe0fb5b45ab 100644
--- a/src/knot/conf/cf-lex.l
+++ b/src/knot/conf/cf-lex.l
@@ -112,6 +112,7 @@ log             { lval.t = yytext; return LOG; }
 
 any { lval.t = yytext; lval.i = LOG_ANY; return LOG_SRC; }
 server { lval.t = yytext; lval.i = LOG_SERVER; return LOG_SRC; }
+answering { lval.t = yytext; lval.i = LOG_ANSWER; return LOG_SRC; }
 zone { lval.t = yytext; lval.i = LOG_ZONE; return LOG_SRC; }
 stdout { lval.t = yytext; lval.i = LOGT_STDOUT; return LOG_DEST; }
 stderr { lval.t = yytext; lval.i = LOGT_STDERR; return LOG_DEST; }
diff --git a/src/knot/server/server.c b/src/knot/server/server.c
index f5b88c8fbac796589b6e05a44b13a6e1f4ba2491..4ac919ddc48dac68f00e95966baaab580ea1dc1d 100644
--- a/src/knot/server/server.c
+++ b/src/knot/server/server.c
@@ -652,7 +652,7 @@ int server_refresh(server_t *server)
 		if (zd->xfr_in.timer) {
 			evsched_cancel(sch, zd->xfr_in.timer);
 			evsched_schedule(sch, zd->xfr_in.timer,
-			                 tls_rand() * 500 + i/4);
+			                 tls_rand() * 500 + i/2);
 			/* Cumulative delay. */
 		}
 	}
diff --git a/src/knot/server/zones.c b/src/knot/server/zones.c
index 564de380555fd2a38052cdf8d3a6eeb3f28d2474..a06484df2432c797ba167843d9dbce2249c067ca 100644
--- a/src/knot/server/zones.c
+++ b/src/knot/server/zones.c
@@ -4059,7 +4059,7 @@ int zones_verify_tsig_query(const knot_packet_t *query,
 	 */
 	tsig_algorithm_t alg = tsig_rdata_alg(tsig_rr);
 	if (tsig_alg_digest_length(alg) == 0) {
-		log_server_info("Unsupported digest algorithm "
+		log_answer_info("Unsupported digest algorithm "
 		                "requested, treating as bad key\n");
 		/*! \todo [TSIG] It is unclear from RFC if I
 		 *               should treat is as a bad key