diff --git a/src/lib-sieve/sieve.c b/src/lib-sieve/sieve.c
index 7da596929a8e43cbff712720c22015107a2bfc25..ca90a3ac3d0c8ca93d25dd6a3d5947736a3d4883 100644
--- a/src/lib-sieve/sieve.c
+++ b/src/lib-sieve/sieve.c
@@ -55,12 +55,19 @@ int sieve_init(const struct sieve_environment *env,
 	       const struct sieve_callbacks *callbacks, void *context,
 	       bool debug, struct sieve_instance **svinst_r)
 {
+	struct event *event;
 	struct sieve_instance *svinst;
 	const char *domain;
 	pool_t pool;
 
 	*svinst_r = NULL;
 
+	event = event_create(env->event_parent);
+	event_add_category(event, &event_category_sieve);
+	event_set_forced_debug(event, debug);
+	event_set_append_log_prefix(event, "sieve: ");
+	event_add_str(event, "user", env->username);
+
 	/* Create Sieve engine instance */
 	pool = pool_alloconly_create("sieve", 8192);
 	svinst = p_new(pool, struct sieve_instance, 1);
@@ -75,12 +82,7 @@ int sieve_init(const struct sieve_environment *env,
 	svinst->flags = env->flags;
 	svinst->env_location = env->location;
 	svinst->delivery_phase = env->delivery_phase;
-
-	svinst->event = event_create(env->event_parent);
-	event_add_category(svinst->event, &event_category_sieve);
-	event_set_forced_debug(svinst->event, debug);
-	event_set_append_log_prefix(svinst->event, "sieve: ");
-	event_add_str(svinst->event, "user", env->username);
+	svinst->event = event;
 
 	/* Determine domain */
 	if (env->domainname != NULL && *(env->domainname) != '\0')
@@ -109,7 +111,7 @@ int sieve_init(const struct sieve_environment *env,
 
 	sieve_errors_init(svinst);
 
-	e_debug(svinst->event, "%s version %s initializing",
+	e_debug(event, "%s version %s initializing",
 		PIGEONHOLE_NAME, PIGEONHOLE_VERSION_FULL);
 
 	/* Read configuration */