Browse Source

Debug-level log entry for any Jackson exception during canConvert

Issue: SPR-15582
pull/1290/merge
Juergen Hoeller 9 years ago
parent
commit
be93ee77e4
  1. 16
      spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java
  2. 14
      spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java

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

@ -1,5 +1,5 @@ @@ -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 { @@ -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 {

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

@ -191,10 +191,20 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener @@ -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 {

Loading…
Cancel
Save