diff --git a/spring-jcl/src/main/java/org/apache/commons/logging/LogFactory.java b/spring-jcl/src/main/java/org/apache/commons/logging/LogFactory.java index 96afa00f49..527d79afc9 100644 --- a/spring-jcl/src/main/java/org/apache/commons/logging/LogFactory.java +++ b/spring-jcl/src/main/java/org/apache/commons/logging/LogFactory.java @@ -206,92 +206,108 @@ public abstract class LogFactory { @Override public boolean isFatalEnabled() { - return logger.isEnabled(Level.FATAL, null, null); + return this.logger.isEnabled(Level.FATAL); } @Override public boolean isErrorEnabled() { - return logger.isEnabled(Level.ERROR, null, null); + return this.logger.isEnabled(Level.ERROR); } @Override public boolean isWarnEnabled() { - return logger.isEnabled(Level.WARN, null, null); + return this.logger.isEnabled(Level.WARN); } @Override public boolean isInfoEnabled() { - return logger.isEnabled(Level.INFO, null, null); + return this.logger.isEnabled(Level.INFO); } @Override public boolean isDebugEnabled() { - return logger.isEnabled(Level.DEBUG, null, null); + return this.logger.isEnabled(Level.DEBUG); } @Override public boolean isTraceEnabled() { - return logger.isEnabled(Level.TRACE, null, null); + return this.logger.isEnabled(Level.TRACE); } @Override public void fatal(Object message) { - logger.logIfEnabled(FQCN, Level.FATAL, null, message, null); + log(Level.FATAL, message, null); } @Override public void fatal(Object message, Throwable exception) { - logger.logIfEnabled(FQCN, Level.FATAL, null, message, exception); + log(Level.FATAL, message, exception); } @Override public void error(Object message) { - logger.logIfEnabled(FQCN, Level.ERROR, null, message, null); + log(Level.ERROR, message, null); } @Override public void error(Object message, Throwable exception) { - logger.logIfEnabled(FQCN, Level.ERROR, null, message, exception); + log(Level.ERROR, message, exception); } @Override public void warn(Object message) { - logger.logIfEnabled(FQCN, Level.WARN, null, message, null); + log(Level.WARN, message, null); } @Override public void warn(Object message, Throwable exception) { - logger.logIfEnabled(FQCN, Level.WARN, null, message, exception); + log(Level.WARN, message, exception); } @Override public void info(Object message) { - logger.logIfEnabled(FQCN, Level.INFO, null, message, null); + log(Level.INFO, message, null); } @Override public void info(Object message, Throwable exception) { - logger.logIfEnabled(FQCN, Level.INFO, null, message, exception); + log(Level.INFO, message, exception); } @Override public void debug(Object message) { - logger.logIfEnabled(FQCN, Level.DEBUG, null, message, null); + log(Level.DEBUG, message, null); } @Override public void debug(Object message, Throwable exception) { - logger.logIfEnabled(FQCN, Level.DEBUG, null, message, exception); + log(Level.DEBUG, message, exception); } @Override public void trace(Object message) { - logger.logIfEnabled(FQCN, Level.TRACE, null, message, null); + log(Level.TRACE, message, null); } @Override public void trace(Object message, Throwable exception) { - logger.logIfEnabled(FQCN, Level.TRACE, null, message, exception); + log(Level.TRACE, message, exception); + } + + private void log(Level level, Object message, Throwable exception) { + if (message instanceof String) { + // Explicitly pass a String argument, avoiding Log4j's argument expansion + // for message objects in case of "{}" sequences (SPR-16226) + if (exception != null) { + this.logger.logIfEnabled(FQCN, level, null, (String) message, exception); + } + else { + this.logger.logIfEnabled(FQCN, level, null, (String) message); + } + } + else { + this.logger.logIfEnabled(FQCN, level, null, message, exception); + } } }