diff --git a/src/main/java/com/googlesource/gerrit/plugins/auditsl4j/AuditConfig.java b/src/main/java/com/googlesource/gerrit/plugins/auditsl4j/AuditConfig.java
index ce7a09a..291c1f3 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/auditsl4j/AuditConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/auditsl4j/AuditConfig.java
@@ -18,6 +18,7 @@
 import com.google.gerrit.server.config.PluginConfig;
 import com.google.gerrit.server.config.PluginConfigFactory;
 import com.google.inject.Inject;
+import java.util.Optional;
 
 public class AuditConfig {
   private final PluginConfig config;
@@ -30,4 +31,8 @@
   public AuditFormatTypes getFormat() {
     return config.getEnum("format", AuditFormatTypes.CSV);
   }
+
+  public Optional<String> getLogName() {
+    return Optional.ofNullable(config.getString("logName"));
+  }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/auditsl4j/AuditWriterToAsyncAppender.java b/src/main/java/com/googlesource/gerrit/plugins/auditsl4j/AuditWriterToAsyncAppender.java
new file mode 100644
index 0000000..448b4c3
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/auditsl4j/AuditWriterToAsyncAppender.java
@@ -0,0 +1,55 @@
+// Copyright (C) 2018 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.auditsl4j;
+
+import com.google.gerrit.common.TimeUtil;
+import com.google.gerrit.server.util.SystemLog;
+import com.google.inject.Singleton;
+import org.apache.log4j.AsyncAppender;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
+import org.apache.log4j.spi.LoggingEvent;
+
+@Singleton
+public class AuditWriterToAsyncAppender implements AuditWriter {
+  private final Logger log = Logger.getLogger(LoggerAudit.AUDIT_LOGGER_NAME);
+  private final AsyncAppender appender;
+
+  public AuditWriterToAsyncAppender(AuditConfig config, SystemLog systemLog) {
+    String logName = config.getLogName().get();
+    appender = systemLog.createAsyncAppender(logName, new PatternLayout());
+  }
+
+  @Override
+  public void write(String auditBody) {
+    appender.append(newLoggingEvent(auditBody));
+  }
+
+  private LoggingEvent newLoggingEvent(String auditBody) {
+    return new LoggingEvent( //
+        LoggerAudit.AUDIT_LOGGER_NAME,
+        log, // logger
+        TimeUtil.nowMs(), // when
+        Level.INFO, // level
+        auditBody, // message text
+        "HTTPD", // thread name
+        null, // exception information
+        null, // current NDC string
+        null, // caller location
+        null // MDC properties
+        );
+  }
+}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/auditsl4j/Module.java b/src/main/java/com/googlesource/gerrit/plugins/auditsl4j/Module.java
index 664ce4d..6ebe298 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/auditsl4j/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/auditsl4j/Module.java
@@ -42,5 +42,9 @@
       default:
         throw new IllegalArgumentException("Unsupported renderer '" + rendererType + "'");
     }
+
+    if (config.getLogName().isPresent()) {
+      bind(AuditWriter.class).to(AuditWriterToAsyncAppender.class);
+    }
   }
 }
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index 3ec4085..a18a878 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -9,4 +9,8 @@
 
 gerrit.audit-sl4j.format
 :	Output format of the audit record. Can be set to either JSON
-    or CSV. By default, CSV. 
\ No newline at end of file
+    or CSV. By default, CSV.
+    
+gerrit.audit-sl4j.logName
+:	Write audit to a separate log name under Gerrit logs directory.
+    By default, audit records are put into the error_log.
\ No newline at end of file
