357216 - Logging via Log4J does not expand braces in format strings
+ Made JettyAwareLogger more resilient to logger downstream implementations by making it perform the slf4j message formatting before handing it off to the LocationAwareLogger method(s)
This commit is contained in:
parent
03c0192cdb
commit
f84c859bbc
|
@ -13,9 +13,15 @@
|
||||||
package org.eclipse.jetty.util.log;
|
package org.eclipse.jetty.util.log;
|
||||||
|
|
||||||
import org.slf4j.Marker;
|
import org.slf4j.Marker;
|
||||||
|
import org.slf4j.helpers.FormattingTuple;
|
||||||
|
import org.slf4j.helpers.MessageFormatter;
|
||||||
|
|
||||||
|
/**
|
||||||
/* ------------------------------------------------------------ */
|
* JettyAwareLogger is used to fix a FQCN bug that arises from how Jetty
|
||||||
|
* Log uses an indirect slf4j implementation.
|
||||||
|
*
|
||||||
|
* https://bugs.eclipse.org/bugs/show_bug.cgi?id=276670
|
||||||
|
*/
|
||||||
class JettyAwareLogger implements org.slf4j.Logger
|
class JettyAwareLogger implements org.slf4j.Logger
|
||||||
{
|
{
|
||||||
private static final int DEBUG = org.slf4j.spi.LocationAwareLogger.DEBUG_INT;
|
private static final int DEBUG = org.slf4j.spi.LocationAwareLogger.DEBUG_INT;
|
||||||
|
@ -24,6 +30,7 @@ class JettyAwareLogger implements org.slf4j.Logger
|
||||||
private static final int TRACE = org.slf4j.spi.LocationAwareLogger.TRACE_INT;
|
private static final int TRACE = org.slf4j.spi.LocationAwareLogger.TRACE_INT;
|
||||||
private static final int WARN = org.slf4j.spi.LocationAwareLogger.WARN_INT;
|
private static final int WARN = org.slf4j.spi.LocationAwareLogger.WARN_INT;
|
||||||
|
|
||||||
|
private static final String FQCN = Slf4jLog.class.getName();
|
||||||
private final org.slf4j.spi.LocationAwareLogger _logger;
|
private final org.slf4j.spi.LocationAwareLogger _logger;
|
||||||
|
|
||||||
public JettyAwareLogger(org.slf4j.spi.LocationAwareLogger logger)
|
public JettyAwareLogger(org.slf4j.spi.LocationAwareLogger logger)
|
||||||
|
@ -586,8 +593,19 @@ class JettyAwareLogger implements org.slf4j.Logger
|
||||||
return _logger.toString();
|
return _logger.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void log(Marker marker, int level, String msg, Object[] objArray, Throwable t)
|
private void log(Marker marker, int level, String msg, Object[] argArray, Throwable t)
|
||||||
{
|
{
|
||||||
_logger.log(marker,"org.eclipse.jetty.util.log.Log",level, msg, objArray,t);
|
if (argArray == null)
|
||||||
|
{
|
||||||
|
// Simple SLF4J Message (no args)
|
||||||
|
_logger.log(marker,FQCN,level,msg,null,t);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Don't assume downstream handles argArray properly.
|
||||||
|
// Do it the SLF4J way here to eliminate that as a bug.
|
||||||
|
FormattingTuple ft = MessageFormatter.arrayFormat(msg,argArray);
|
||||||
|
_logger.log(marker,FQCN,level,ft.getMessage(),null,t);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,10 +129,6 @@ public class Log
|
||||||
return __log;
|
return __log;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated anonymous logging is deprecated, use a named {@link Logger} obtained from {@link #getLogger(String)}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
static boolean isIgnored()
|
static boolean isIgnored()
|
||||||
{
|
{
|
||||||
return __ignored;
|
return __ignored;
|
||||||
|
|
|
@ -42,6 +42,8 @@ public class Slf4jLog implements Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger( name );
|
org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger( name );
|
||||||
|
// Fix LocationAwareLogger use to indicate FQCN of this class -
|
||||||
|
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=276670
|
||||||
if (logger instanceof org.slf4j.spi.LocationAwareLogger)
|
if (logger instanceof org.slf4j.spi.LocationAwareLogger)
|
||||||
{
|
{
|
||||||
_logger = new JettyAwareLogger((org.slf4j.spi.LocationAwareLogger)logger);
|
_logger = new JettyAwareLogger((org.slf4j.spi.LocationAwareLogger)logger);
|
||||||
|
|
Loading…
Reference in New Issue