Skip to content

Commit 7eaedf2

Browse files
committed
Debug-level log entry for any Jackson exception during canConvert
Issue: SPR-15582
1 parent 55b0fe1 commit 7eaedf2

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,10 +180,20 @@ protected boolean canConvertTo(Object payload, @Nullable MessageHeaders headers)
180180
* @since 4.3
181181
*/
182182
protected void logWarningIfNecessary(Type type, @Nullable Throwable cause) {
183-
if (cause != null && !(cause instanceof JsonMappingException && cause.getMessage().startsWith("Can not find"))) {
183+
if (cause == null) {
184+
return;
185+
}
186+
187+
boolean debugLevel = (cause instanceof JsonMappingException &&
188+
cause.getMessage().startsWith("Can not find"));
189+
190+
if (debugLevel ? logger.isDebugEnabled() : logger.isWarnEnabled()) {
184191
String msg = "Failed to evaluate Jackson " + (type instanceof JavaType ? "de" : "") +
185192
"serialization for type [" + type + "]";
186-
if (logger.isDebugEnabled()) {
193+
if (debugLevel) {
194+
logger.debug(msg, cause);
195+
}
196+
else if (logger.isDebugEnabled()) {
187197
logger.warn(msg, cause);
188198
}
189199
else {

spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,20 @@ public boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType) {
191191
* @since 4.3
192192
*/
193193
protected void logWarningIfNecessary(Type type, @Nullable Throwable cause) {
194-
if (cause != null && !(cause instanceof JsonMappingException && cause.getMessage().startsWith("Can not find"))) {
194+
if (cause == null) {
195+
return;
196+
}
197+
198+
boolean debugLevel = (cause instanceof JsonMappingException &&
199+
cause.getMessage().startsWith("Can not find"));
200+
201+
if (debugLevel ? logger.isDebugEnabled() : logger.isWarnEnabled()) {
195202
String msg = "Failed to evaluate Jackson " + (type instanceof JavaType ? "de" : "") +
196203
"serialization for type [" + type + "]";
197-
if (logger.isDebugEnabled()) {
204+
if (debugLevel) {
205+
logger.debug(msg, cause);
206+
}
207+
else if (logger.isDebugEnabled()) {
198208
logger.warn(msg, cause);
199209
}
200210
else {

0 commit comments

Comments
 (0)