@@ -135,11 +135,18 @@ public ModelAndView resolveException(
135
135
prepareResponse (ex , response );
136
136
ModelAndView result = doResolveException (request , response , handler , ex );
137
137
if (result != null ) {
138
- // Print warn message when warn logger is not enabled...
139
- if (logger .isWarnEnabled () && (this .warnLogger == null || !this .warnLogger .isWarnEnabled ())) {
140
- logger .warn ("Resolved [" + ex + "]" + (result .isEmpty () ? "" : " to " + result ));
138
+ // Print warn or debug message when warn logger is not enabled...
139
+ if (this .warnLogger == null || !this .warnLogger .isWarnEnabled ()) {
140
+ if (!useWarnLevelWhenWarnLoggerNotEnabled ()) {
141
+ if (logger .isDebugEnabled ()) {
142
+ logger .debug ("Resolved [" + ex + "]" + (result .isEmpty () ? "" : " to " + result ));
143
+ }
144
+ }
145
+ else if (logger .isWarnEnabled ()) {
146
+ logger .warn ("Resolved [" + ex + "]" + (result .isEmpty () ? "" : " to " + result ));
147
+ }
141
148
}
142
- // warnLogger with full stack trace (requires explicit config)
149
+ // Log with warnLogger (requires explicit config)
143
150
logException (ex , request );
144
151
}
145
152
return result ;
@@ -179,6 +186,16 @@ protected boolean shouldApplyTo(HttpServletRequest request, @Nullable Object han
179
186
return (this .mappedHandlers == null && this .mappedHandlerClasses == null );
180
187
}
181
188
189
+ /**
190
+ * Whether to log warn level messages (return value "true") or debug level
191
+ * messages (return value "false") through the regular class logger when
192
+ * {@link #setWarnLogCategory warn logging} is not activated.
193
+ * <p>By default returns "true".
194
+ */
195
+ protected boolean useWarnLevelWhenWarnLoggerNotEnabled () {
196
+ return true ;
197
+ }
198
+
182
199
/**
183
200
* Log the given exception at warn level, provided that warn logging has been
184
201
* activated through the {@link #setWarnLogCategory "warnLogCategory"} property.
0 commit comments