SecurityAuditTrailWriter.java
package com.project.auth.config.auth.security;
import com.project.auth.application.support.audit.AuthAuditEventType;
import com.project.auth.application.support.audit.AuthAuditFields;
import com.project.auth.application.support.logging.LogSanitizer;
import jakarta.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SecurityAuditTrailWriter {
private static final Logger log = LoggerFactory.getLogger(SecurityAuditTrailWriter.class);
private static final Logger audit = LoggerFactory.getLogger("audit.auth");
private final SecurityActorIdResolver actorIdResolver;
public SecurityAuditTrailWriter(SecurityActorIdResolver actorIdResolver) {
this.actorIdResolver = actorIdResolver;
}
public void record(HttpServletRequest request, AuthAuditEventType eventType, String message) {
String actorId = actorIdResolver.resolve(request);
String requestPath = LogSanitizer.requestPath(request.getRequestURI());
log.warn(
"{} actorId={} method={} requestPath={}",
message,
actorId,
request.getMethod(),
requestPath
);
audit.atWarn()
.addKeyValue(AuthAuditFields.EVENT_TYPE, eventType.code())
.addKeyValue(AuthAuditFields.ACTOR_ID, actorId)
.addKeyValue(AuthAuditFields.METHOD, request.getMethod())
.addKeyValue(AuthAuditFields.REQUEST_PATH, requestPath)
.log(eventType.code());
}
}