From 172cc6872c2c696abe7ed43dfb93d4c43df8fd4c Mon Sep 17 00:00:00 2001 From: milanmajchrak Date: Fri, 13 Mar 2026 16:30:41 +0100 Subject: [PATCH] Reduce warn logs noise (#1268) + line length fix (#1274) --- .../DSpaceApiExceptionControllerAdvice.java | 27 ++++++++++++++++--- dspace/config/log4j2.xml | 7 +++++ 2 files changed, 31 insertions(+), 3 deletions(-) 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 d18fc860f64b..a02090200ddb 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. */ @@ -300,12 +308,25 @@ private void sendErrorResponse(final HttpServletRequest request, StackTraceElement[] trace = ex.getStackTrace(); location = trace.length <= 0 ? "unknown" : trace[0].toString(); } - log.warn("{} (status:{} exception: {} at: {})", message, statusCode, - exceptionMessage, location); - } + logClientError(statusCode, message, //Exception properties will be set by org.springframework.boot.web.support.ErrorPageFilter response.sendError(statusCode, message); } } + /** + * Log a 4xx client error. 404 NOT_FOUND is sent to a dedicated logger ({@link #notFoundLog}) + * at WARN level, but the logger is set to OFF by default in log4j2.xml (suppressed). + * Set logger to WARN in log4j2.xml to see 404 responses in logs. + */ + private void logClientError(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); + } + } + diff --git a/dspace/config/log4j2.xml b/dspace/config/log4j2.xml index 2b72fbe1c574..b15085af6e65 100644 --- a/dspace/config/log4j2.xml +++ b/dspace/config/log4j2.xml @@ -66,6 +66,13 @@ + + + + +