diff --git a/src/lib-sieve-tool/sieve-tool.c b/src/lib-sieve-tool/sieve-tool.c
index 0139567d64c6e4068670554a10fabdc46cc7d154..8d021629334c47e30eef0892f05772f9794223d4 100644
--- a/src/lib-sieve-tool/sieve-tool.c
+++ b/src/lib-sieve-tool/sieve-tool.c
@@ -517,6 +517,7 @@ struct sieve_binary *sieve_tool_script_compile
 
 	ehandler = sieve_stderr_ehandler_create(svinst, 0);
 	sieve_error_handler_accept_infolog(ehandler, TRUE);
+	sieve_error_handler_accept_debuglog(ehandler, svinst->debug);
 
 	if ( (sbin = sieve_compile(svinst, filename, name, ehandler, NULL)) == NULL )
 		i_error("failed to compile sieve script '%s'", filename);
diff --git a/src/lib-sieve/sieve-error.c b/src/lib-sieve/sieve-error.c
index 8ad118d2b001612d56b21f8c8fef64785ecb38e9..5b6bdb8c62d6647e99936f8f1f65a4889d6214ab 100644
--- a/src/lib-sieve/sieve-error.c
+++ b/src/lib-sieve/sieve-error.c
@@ -144,13 +144,13 @@ void sieve_direct_vinfo
 void sieve_direct_vdebug
 (struct sieve_instance *svinst, struct sieve_error_handler *ehandler,
 	unsigned int flags, const char *location, const char *fmt, va_list args)
-{ 
+{
 	if ( (flags & SIEVE_ERROR_FLAG_GLOBAL) != 0 &&
-		(ehandler == NULL || ehandler->parent == NULL) && 
+		(ehandler == NULL || ehandler->parent == NULL) &&
 		svinst->system_ehandler != ehandler &&
 		svinst->system_ehandler->vdebug != NULL ) {
 		va_list args_copy;
-	
+
 		VA_COPY(args_copy, args);
 
 		svinst->system_ehandler->vdebug
@@ -159,8 +159,8 @@ void sieve_direct_vdebug
 
 	if ( ehandler == NULL ) return;
 
-	if ( ehandler->parent != NULL || ehandler->log_info ) {
-		if ( ehandler->vdebug != NULL )	
+	if ( ehandler->parent != NULL || ehandler->log_debug ) {
+		if ( ehandler->vdebug != NULL )
 			ehandler->vdebug(ehandler, flags, location, fmt, args);
 	}
 }
@@ -527,7 +527,7 @@ void sieve_error_handler_init
 	ehandler->svinst = svinst;
 	ehandler->refcount = 1;
 	ehandler->max_errors = max_errors;
-	
+
 	ehandler->errors = 0;
 	ehandler->warnings = 0;
 }
@@ -667,6 +667,8 @@ struct sieve_error_handler *sieve_master_ehandler_create
 	if ( prefix != NULL )
 		ehandler->prefix = p_strdup(pool, prefix);
 
+	ehandler->handler.log_debug = svinst->debug;
+
 	return &ehandler->handler;
 }
 
diff --git a/src/lib-sieve/sieve-script.c b/src/lib-sieve/sieve-script.c
index 5c45632b7779a0638726ff004cdeb6996a165499..88581c712be9c21347a1f779abf31a3d5ada9437 100644
--- a/src/lib-sieve/sieve-script.c
+++ b/src/lib-sieve/sieve-script.c
@@ -138,11 +138,11 @@ static void sieve_script_handle_file_error
 {
 	switch ( errno ) {
 	case ENOENT:
+		if ( svinst->debug )
+			sieve_sys_debug(svinst, "script file %s not found", t_abspath(path));
 		if ( error_r == NULL )
 			sieve_error(ehandler, name, "sieve script does not exist");
 		else {
-			if ( svinst->debug )
-				sieve_sys_debug(svinst, "script file %s not found", t_abspath(path));
 			*error_r = SIEVE_ERROR_NOT_FOUND;
 		}
 		break;