From be93ee77e4fdc3f61d14eebaa6564cfaf3f38700 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 7 Jun 2017 17:56:47 +0200 Subject: [PATCH] Debug-level log entry for any Jackson exception during canConvert Issue: SPR-15582 --- .../MappingJackson2MessageConverter.java | 16 +++++++++++++--- .../AbstractJackson2HttpMessageConverter.java | 14 ++++++++++++-- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java b/spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java index 490b6f6a915..6921c2dab7f 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -178,10 +178,20 @@ public class MappingJackson2MessageConverter extends AbstractMessageConverter { * @since 4.3 */ protected void logWarningIfNecessary(Type type, Throwable cause) { - if (cause != null && !(cause instanceof JsonMappingException && cause.getMessage().startsWith("Can not find"))) { + if (cause == null) { + return; + } + + boolean debugLevel = (cause instanceof JsonMappingException && + cause.getMessage().startsWith("Can not find")); + + if (debugLevel ? logger.isDebugEnabled() : logger.isWarnEnabled()) { String msg = "Failed to evaluate Jackson " + (type instanceof JavaType ? "de" : "") + "serialization for type [" + type + "]"; - if (logger.isDebugEnabled()) { + if (debugLevel) { + logger.debug(msg, cause); + } + else if (logger.isDebugEnabled()) { logger.warn(msg, cause); } else { diff --git a/spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java b/spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java index 5eb2cdfd026..942985dcc53 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java +++ b/spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java @@ -191,10 +191,20 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener * @since 4.3 */ protected void logWarningIfNecessary(Type type, Throwable cause) { - if (cause != null && !(cause instanceof JsonMappingException && cause.getMessage().startsWith("Can not find"))) { + if (cause == null) { + return; + } + + boolean debugLevel = (cause instanceof JsonMappingException && + cause.getMessage().startsWith("Can not find")); + + if (debugLevel ? logger.isDebugEnabled() : logger.isWarnEnabled()) { String msg = "Failed to evaluate Jackson " + (type instanceof JavaType ? "de" : "") + "serialization for type [" + type + "]"; - if (logger.isDebugEnabled()) { + if (debugLevel) { + logger.debug(msg, cause); + } + else if (logger.isDebugEnabled()) { logger.warn(msg, cause); } else {