diff --git a/graylog2-server/src/main/java/org/graylog2/audit/Auditor.java b/graylog2-server/src/main/java/org/graylog2/audit/Auditor.java index 1588a4f58458..a82e0aeb36b2 100644 --- a/graylog2-server/src/main/java/org/graylog2/audit/Auditor.java +++ b/graylog2-server/src/main/java/org/graylog2/audit/Auditor.java @@ -65,7 +65,15 @@ public T audited(final String username, final String eventType, final Object actionInput, final Supplier auditableAction) { - return audited(username, eventType, actionInput, auditableAction, SUCCESS_ON_NON_NULL); + return audited(username, eventType, actionInput, auditableAction, SUCCESS_ON_NON_NULL, null); + } + + public T audited(final String username, + final String eventType, + final Object actionInput, + final Supplier auditableAction, + final Map extra) { + return audited(username, eventType, actionInput, auditableAction, SUCCESS_ON_NON_NULL, extra); } public T audited(final String username, @@ -73,21 +81,31 @@ public T audited(final String username, final Object actionInput, final Supplier auditableAction, final Predicate isSuccess) { + return audited(username, eventType, actionInput, auditableAction, isSuccess, null); + } + + public T audited(final String username, + final String eventType, + final Object actionInput, + final Supplier auditableAction, + final Predicate isSuccess, + final Map extra) { final T actionResult; try { actionResult = auditableAction.get(); } catch (RuntimeException e) { - recordFailure(username, - eventType, - actionInput, - null, - Map.of(ERROR, String.valueOf(e.getMessage()))); + final Map extraWithError = new LinkedHashMap<>(); + if (extra != null) { + extraWithError.putAll(extra); + } + extraWithError.put(ERROR, String.valueOf(e.getMessage())); + recordFailure(username, eventType, actionInput, null, extraWithError); throw e; } if (isSuccess.test(actionResult)) { - recordSuccess(username, eventType, actionInput, actionResult, null); + recordSuccess(username, eventType, actionInput, actionResult, extra); } else { - recordFailure(username, eventType, actionInput, actionResult, null); + recordFailure(username, eventType, actionInput, actionResult, extra); } return actionResult; }