Closes #7
diff --git a/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/AbstractEventLogger.java b/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/AbstractEventLogger.java
index cda7207..ee203d6 100644
--- a/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/AbstractEventLogger.java
+++ b/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/AbstractEventLogger.java
@@ -21,6 +21,7 @@
import org.apache.logging.log4j.ThreadContext;
import org.apache.logging.log4j.audit.catalog.CatalogManager;
import org.apache.logging.log4j.audit.exception.AuditException;
+import org.apache.logging.log4j.audit.util.NamingUtils;
import org.apache.logging.log4j.catalog.api.Attribute;
import org.apache.logging.log4j.catalog.api.Constraint;
import org.apache.logging.log4j.catalog.api.Event;
@@ -79,28 +80,24 @@
}
public void logEvent(String eventName, Map<String, String> attributes) {
- Event event = catalogManager.getEvent(eventName);
- if (event == null) {
- throw new AuditException("Unable to locate definition of audit event " + eventName);
- }
- logEvent(eventName, attributes, event, defaultAuditExceptionHandler);
+ logEvent(eventName, null, attributes, defaultAuditExceptionHandler);
}
public void logEvent(String eventName, String catalogId, Map<String, String> attributes) {
- Event event = catalogManager.getEvent(eventName, catalogId);
- if (event == null) {
- throw new AuditException("Unable to locate definition of audit event " + eventName);
- }
- logEvent(eventName, attributes, event, defaultAuditExceptionHandler);
+ logEvent(eventName, catalogId, attributes, defaultAuditExceptionHandler);
}
public void logEvent(String eventName, Map<String, String> attributes, AuditExceptionHandler exceptionHandler) {
- Event event = catalogManager.getEvent(eventName);
+ logEvent(eventName, null, attributes, exceptionHandler);
+ }
+ private void logEvent(String eventName, String catalogId, Map<String, String> attributes, AuditExceptionHandler exceptionHandler) {
+ String eventId = NamingUtils.lowerFirst(eventName);
+ Event event = catalogId == null ? catalogManager.getEvent(eventId) : catalogManager.getEvent(eventId, catalogId);
if (event == null) {
- throw new AuditException("Unable to locate definition of audit event " + eventName);
+ throw new AuditException("Unable to locate definition of audit event " + eventId);
}
- logEvent(eventName, attributes, event, exceptionHandler);
+ logEvent(eventId, attributes, event, exceptionHandler);
}
protected abstract void logEvent(StructuredDataMessage message);
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 9617956..2362a50 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
@@ -84,7 +84,7 @@
* @return Returns an instance of the Event.
*/
@SuppressWarnings("unchecked")
- public static <T> T getEvent(Class<T> intrface) {
+ public static <T extends AuditEvent> T getEvent(Class<T> intrface) {
Class<?>[] interfaces = new Class<?>[] { intrface };
diff --git a/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/rest/RequestContextFilter.java b/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/rest/RequestContextFilter.java
index 28f922a..f60263b 100644
--- a/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/rest/RequestContextFilter.java
+++ b/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/rest/RequestContextFilter.java
@@ -79,11 +79,11 @@
if (servletRequest instanceof HttpServletRequest) {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
- logger.info("Starting request {}" + request.getRequestURI());
+ logger.trace("Starting request {}", request.getRequestURI());
try {
- Enumeration headers = request.getHeaderNames();
+ Enumeration<String> headers = request.getHeaderNames();
while (headers.hasMoreElements()) {
- String name = (String) headers.nextElement();
+ String name = headers.nextElement();
RequestContextMapping mapping = mappings.getMappingByHeader(name);
logger.debug("Got Mapping:{} for Header:{}", mapping, name);
if (mapping != null) {
@@ -99,12 +99,17 @@
}
}
}
- long start = System.nanoTime();
+ long start = 0;
+ if (logger.isTraceEnabled()) {
+ start = System.nanoTime();
+ }
filterChain.doFilter(servletRequest, servletResponse);
- long elapsed = System.nanoTime() - start;
- StringBuilder sb = new StringBuilder("Request ").append(request.getRequestURI()).append(" completed in ");
- ElapsedUtil.addElapsed(elapsed, sb);
- logger.info(sb.toString());
+ if (logger.isTraceEnabled()) {
+ long elapsed = System.nanoTime() - start;
+ StringBuilder sb = new StringBuilder("Request ").append(request.getRequestURI()).append(" completed in ");
+ ElapsedUtil.addElapsed(elapsed, sb);
+ logger.trace(sb.toString());
+ }
} catch (Throwable e) {
logger.error("Application cascaded error", e);
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
diff --git a/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/rest/RequestContextHandlerInterceptor.java b/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/rest/RequestContextHandlerInterceptor.java
index 173461a..114dbf5 100644
--- a/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/rest/RequestContextHandlerInterceptor.java
+++ b/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/rest/RequestContextHandlerInterceptor.java
@@ -44,10 +44,10 @@
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
- logger.info("Starting request {}" + request.getRequestURI());
- Enumeration headers = request.getHeaderNames();
+ logger.trace("Starting request {}", request.getRequestURI());
+ Enumeration<String> headers = request.getHeaderNames();
while (headers.hasMoreElements()) {
- String name = (String) headers.nextElement();
+ String name = headers.nextElement();
RequestContextMapping mapping = mappings.getMappingByHeader(name);
logger.debug("Got Mapping:{} for Header:{}", mapping, name);
if (mapping != null) {
@@ -63,17 +63,21 @@
}
}
}
- startTime.set(System.nanoTime());
+ if (logger.isTraceEnabled()) {
+ startTime.set(System.nanoTime());
+ }
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object o, ModelAndView modelAndView) throws Exception {
- long elapsed = System.nanoTime() - startTime.get();
- StringBuilder sb = new StringBuilder("Request ").append(request.getRequestURI()).append(" completed in ");
- ElapsedUtil.addElapsed(elapsed, sb);
- logger.info(sb.toString());
- startTime.remove();
+ if (logger.isTraceEnabled()) {
+ long elapsed = System.nanoTime() - startTime.get();
+ StringBuilder sb = new StringBuilder("Request ").append(request.getRequestURI()).append(" completed in ");
+ ElapsedUtil.addElapsed(elapsed, sb);
+ logger.trace(sb.toString());
+ startTime.remove();
+ }
}
@Override
diff --git a/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/AuditLoggerTest.java b/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/AuditLoggerTest.java
index b497740..3cfca75 100644
--- a/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/AuditLoggerTest.java
+++ b/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/AuditLoggerTest.java
@@ -94,7 +94,7 @@
properties.put("fromAccount", "111111");
properties.put("amount", "111.55");
try {
- auditLogger.logEvent("transfer", properties);
+ auditLogger.logEvent("Transfer", properties);
} catch (Exception ex) {
ex.printStackTrace();
fail();
@@ -103,6 +103,7 @@
assertNotNull("No messages", msgs);
assertTrue("No messages", msgs.size() == 1);
String msg = msgs.get(0);
+ assertTrue("Normalized event name", msg.contains("transfer@"));
assertTrue("No companyId", msg.contains("companyId=\"12345\""));
assertTrue("No ipAddress", msg.contains("ipAddress=\"127.0.0.1\""));
assertTrue("No toAccount", msg.contains("toAccount=\"123456\""));
@@ -121,7 +122,7 @@
Map<String, String> properties = new HashMap<String, String>();
properties.put("toAccount", "123456");
properties.put("amount", "111.55");
- auditLogger.logEvent("transfer", properties);
+ auditLogger.logEvent("Transfer", properties);
}
@Test
@@ -130,4 +131,4 @@
auditLogger.logEvent("login", null);
}
-}
\ No newline at end of file
+}
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index bec27d3..b3e265a 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -30,6 +30,17 @@
- "update" - Change
- "remove" - Removed
-->
+ <release version="1.0.1" date="YYYY-MM-DD" description="Release 1.0.1">
+ <action issue="LOG4J2-2420" dev="rgoers" type="fix" due-to="Andrei Ivanov">
+ RequestContextFilter logging cleanup.
+ </action>
+ <action issue="LOG4J2-2442" dev="rgoers" type="fix" due-to="Andrei Ivanov">
+ Normalize the event names logged through AbstractEventLogger.logEvent.
+ </action>
+ <action issue="LOG4J2-2431" dev="rgoers" type="fix" due-to="Andrei Ivanov">
+ Narrow the return type of getEvent.
+ </action>
+ </release>
<release version="1.0.0" date="2018-06-10" description="Release 1.0.0">
</release>
</body>