diff --git a/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/LogEventFactory.java b/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/LogEventFactory.java
index 2362a50..119e78d 100644
--- a/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/LogEventFactory.java
+++ b/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/LogEventFactory.java
@@ -301,13 +301,15 @@
 				}
 
                 logEvent(msg, auditExceptionHandler);
+				return null;
 			}
             if (method.getName().equals("setCompletionStatus")) {
-                String name = NamingUtils.lowerFirst(NamingUtils.getMethodShortName(method.getName()));
                 if (objects == null || objects[0] == null) {
                     throw new IllegalArgumentException("Missing completion status");
                 }
+                String name = NamingUtils.lowerFirst(NamingUtils.getMethodShortName(method.getName()));
                 msg.put(name, objects[0].toString());
+                return null;
             }
             if (method.getName().equals("setAuditExceptionHandler")) {
 			    if (objects == null || objects[0] == null) {
@@ -317,6 +319,7 @@
                 } else {
 			        throw new IllegalArgumentException(objects[0] + " is not an " + AuditExceptionHandler.class.getName());
                 }
+                return null;
             }
 			if (method.getName().startsWith("set")) {
 				String name = NamingUtils.lowerFirst(NamingUtils.getMethodShortName(method.getName()));
@@ -355,6 +358,7 @@
                 }
 
 				msg.put(name, result);
+                return null;
 			}
 
 			return null;
diff --git a/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/LoginTest.java b/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/LoginTest.java
index 190ccd6..aa28ba3 100644
--- a/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/LoginTest.java
+++ b/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/LoginTest.java
@@ -20,9 +20,22 @@
 
         event.logEvent();
 
+        AuditExceptionHandler exceptionHandler = (message, ex) -> {
+
+        };
+        event.setAuditExceptionHandler(exceptionHandler);
+        event.logEvent();
+
         List<String> msgs = app.getMessages();
         assertNotNull("No messages", msgs);
-        assertTrue("No messages", msgs.size() == 2);
+        assertTrue("No messages", msgs.size() == 3);
+
+        String msg = msgs.get(1);
+        assertTrue("No completionStatus", msg.contains("completionStatus=\"Success\""));
+
+        msg = msgs.get(2);
+        assertTrue("auditExceptionHandler should not be present in the context", !msg.contains("auditExceptionHandler=\""));
+        msgs.forEach(System.out::println);
     }
 
     @Test
