diff --git a/src/main/java/com/googlesource/gerrit/plugins/kinesis/KinesisPublisher.java b/src/main/java/com/googlesource/gerrit/plugins/kinesis/KinesisPublisher.java
index 158f8ac..ad5baa5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/kinesis/KinesisPublisher.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/kinesis/KinesisPublisher.java
@@ -41,6 +41,7 @@
   private final KinesisProducer kinesisProducer;
   private final Configuration configuration;
   private final ExecutorService callBackExecutor;
+  private final Log4jKinesisMessageLogger msgLog;
 
   private final Gson gson;
 
@@ -49,11 +50,13 @@
       @EventGson Gson gson,
       KinesisProducer kinesisProducer,
       Configuration configuration,
-      @ProducerCallbackExecutor ExecutorService callBackExecutor) {
+      @ProducerCallbackExecutor ExecutorService callBackExecutor,
+      Log4jKinesisMessageLogger msgLog) {
     this.gson = gson;
     this.kinesisProducer = kinesisProducer;
     this.configuration = configuration;
     this.callBackExecutor = callBackExecutor;
+    this.msgLog = msgLog;
   }
 
   @Override
@@ -106,6 +109,7 @@
                   partitionKey,
                   result.getSequenceNumber(),
                   result.getAttempts().size());
+              msgLog.log(streamName, stringEvent);
             }
 
             @Override
diff --git a/src/main/java/com/googlesource/gerrit/plugins/kinesis/Log4jKinesisMessageLogger.java b/src/main/java/com/googlesource/gerrit/plugins/kinesis/Log4jKinesisMessageLogger.java
new file mode 100644
index 0000000..d5d6372
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/kinesis/Log4jKinesisMessageLogger.java
@@ -0,0 +1,38 @@
+// Copyright (C) 2023 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.googlesource.gerrit.plugins.kinesis;
+
+import com.google.gerrit.extensions.systemstatus.ServerInformation;
+import com.google.gerrit.server.util.PluginLogFile;
+import com.google.gerrit.server.util.SystemLog;
+import com.google.inject.Inject;
+import org.apache.log4j.PatternLayout;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class Log4jKinesisMessageLogger extends PluginLogFile {
+  private static final String LOG_NAME = "message_log";
+  private final Logger msgLog;
+
+  @Inject
+  public Log4jKinesisMessageLogger(SystemLog systemLog, ServerInformation serverInfo) {
+    super(systemLog, serverInfo, LOG_NAME, new PatternLayout("[%d{ISO8601}] [%t] %-5p : %m%n"));
+    this.msgLog = LoggerFactory.getLogger(LOG_NAME);
+  }
+
+  public void log(String streamName, String event) {
+    msgLog.info("PUBLISH {} {}", streamName, event);
+  }
+}
