diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/exception/DSpaceApiExceptionControllerAdvice.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/exception/DSpaceApiExceptionControllerAdvice.java
index 6bfb43297b54..e211a09afca3 100644
--- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/exception/DSpaceApiExceptionControllerAdvice.java
+++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/exception/DSpaceApiExceptionControllerAdvice.java
@@ -61,6 +61,14 @@
public class DSpaceApiExceptionControllerAdvice extends ResponseEntityExceptionHandler {
private static final Logger log = LogManager.getLogger();
+ /**
+ * Dedicated logger for 404 NOT_FOUND responses. Configured at OFF level by default
+ * so that expected 404s don't flood production logs.
+ * Set to WARN in log4j2.xml to see 404 responses in logs.
+ */
+ private static final Logger notFoundLog =
+ LogManager.getLogger("org.dspace.app.rest.exception.DSpaceApiExceptionControllerAdvice.NotFound");
+
/**
* Default collection of HTTP error codes to log as ERROR with full stack trace.
*/
@@ -290,10 +298,23 @@ private void sendErrorResponse(final HttpServletRequest request,
}
log.warn("{} (status:{} exception: {} at: {})", message, statusCode,
exceptionMessage, location);
+ }String location;
+ String exceptionMessage;
+ if (null == ex) {
+ exceptionMessage = "none";
+ location = "unknown";
+ } else {
+ exceptionMessage = ex.getMessage();
+ StackTraceElement[] trace = ex.getStackTrace();
+ location = trace.length <= 0 ? "unknown" : trace[0].toString();
+ }
+ logClientError(statusCode, message,gClientError(int statusCode, String message, String exceptionMessage, String location) {
+ if (statusCode == HttpServletResponse.SC_NOT_FOUND) {
+ notFoundLog.warn("{} (status:{} exception: {} at: {})", message, statusCode,
+ exceptionMessage, location);
+ } else {
+ log.warn("{} (status:{} exception: {} at: {})", message, statusCode,
+ exceptionMessage, location);
}
-
- //Exception properties will be set by org.springframework.boot.web.support.ErrorPageFilter
- response.sendError(statusCode, message);
}
-}
diff --git a/dspace/config/log4j2.xml b/dspace/config/log4j2.xml
index 51c04ef2dcc4..bfda6bd4900a 100644
--- a/dspace/config/log4j2.xml
+++ b/dspace/config/log4j2.xml
@@ -88,6 +88,13 @@
+
+
+
+
+