diff --git a/src/lib-sieve/sieve.c b/src/lib-sieve/sieve.c
index 69827a93765003a6e5eed4b1851a21fef8b6e327..20a68e845e6469b1ab87b7c08227a5767d321c8c 100644
--- a/src/lib-sieve/sieve.c
+++ b/src/lib-sieve/sieve.c
@@ -1007,6 +1007,7 @@ sieve_user_get_log_path(struct sieve_instance *svinst,
  */
 
 struct sieve_trace_log {
+	struct sieve_instance *svinst;
 	struct ostream *output;
 };
 
@@ -1033,6 +1034,7 @@ int sieve_trace_log_create(struct sieve_instance *svinst, const char *path,
 	}
 
 	trace_log = i_new(struct sieve_trace_log, 1);
+	trace_log->svinst = svinst;
 	trace_log->output = output;
 
 	*trace_log_r = trace_log;
@@ -1127,7 +1129,7 @@ void sieve_trace_log_free(struct sieve_trace_log **_trace_log)
 	*_trace_log = NULL;
 
 	if (o_stream_finish(trace_log->output) < 0) {
-		i_error("write(%s) failed: %s",
+		e_error(trace_log->svinst->event, "write(%s) failed: %s",
 			o_stream_get_name(trace_log->output),
 			o_stream_get_error(trace_log->output));
 	}