//
//  ========================================================================
//  Copyright (c) 1995-2019 Mort Bay Consulting Pty. Ltd.
//  ------------------------------------------------------------------------
//  All rights reserved. This program and the accompanying materials
//  are made available under the terms of the Eclipse Public License v1.0
//  and Apache License v2.0 which accompanies this distribution.
//
//      The Eclipse Public License is available at
//      http://www.eclipse.org/legal/epl-v10.html
//
//      The Apache License v2.0 is available at
//      http://www.opensource.org/licenses/apache2.0.php
//
//  You may elect to redistribute this code under either of these licenses.
//  ========================================================================
//

package org.eclipse.jetty.util.log;

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
/** * 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 { private static final int DEBUG = org.slf4j.spi.LocationAwareLogger.DEBUG_INT; private static final int ERROR = org.slf4j.spi.LocationAwareLogger.ERROR_INT; private static final int INFO = org.slf4j.spi.LocationAwareLogger.INFO_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 String FQCN = Slf4jLog.class.getName(); private final org.slf4j.spi.LocationAwareLogger _logger; public JettyAwareLogger(org.slf4j.spi.LocationAwareLogger logger) { _logger = logger; }
See Also:
  • debug.debug(String)
/** * @see org.slf4j.Logger#debug(java.lang.String) */
@Override public void debug(String msg) { log(null, DEBUG, msg, null, null); }
See Also:
  • debug.debug(String, Object)
/** * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object) */
@Override public void debug(String format, Object arg) { log(null, DEBUG, format, new Object[]{arg}, null); }
See Also:
  • debug.debug(String, Object, Object)
/** * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object, java.lang.Object) */
@Override public void debug(String format, Object arg1, Object arg2) { log(null, DEBUG, format, new Object[]{arg1, arg2}, null); }
See Also:
  • debug.debug(String, Object[])
/** * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Object[]) */
@Override public void debug(String format, Object[] argArray) { log(null, DEBUG, format, argArray, null); }
See Also:
  • debug.debug(String, Throwable)
/** * @see org.slf4j.Logger#debug(java.lang.String, java.lang.Throwable) */
@Override public void debug(String msg, Throwable t) { log(null, DEBUG, msg, null, t); }
See Also:
  • debug.debug(Marker, String)
/** * @see org.slf4j.Logger#debug(org.slf4j.Marker, java.lang.String) */
@Override public void debug(Marker marker, String msg) { log(marker, DEBUG, msg, null, null); }
See Also:
  • debug.debug(Marker, String, Object)
/** * @see org.slf4j.Logger#debug(org.slf4j.Marker, java.lang.String, java.lang.Object) */
@Override public void debug(Marker marker, String format, Object arg) { log(marker, DEBUG, format, new Object[]{arg}, null); }
See Also:
  • debug.debug(Marker, String, Object, Object)
/** * @see org.slf4j.Logger#debug(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object) */
@Override public void debug(Marker marker, String format, Object arg1, Object arg2) { log(marker, DEBUG, format, new Object[]{arg1, arg2}, null); }
See Also:
  • debug.debug(Marker, String, Object[])
/** * @see org.slf4j.Logger#debug(org.slf4j.Marker, java.lang.String, java.lang.Object[]) */
@Override public void debug(Marker marker, String format, Object[] argArray) { log(marker, DEBUG, format, argArray, null); }
See Also:
  • debug.debug(Marker, String, Throwable)
/** * @see org.slf4j.Logger#debug(org.slf4j.Marker, java.lang.String, java.lang.Throwable) */
@Override public void debug(Marker marker, String msg, Throwable t) { log(marker, DEBUG, msg, null, t); }
See Also:
  • error.error(String)
/** * @see org.slf4j.Logger#error(java.lang.String) */
@Override public void error(String msg) { log(null, ERROR, msg, null, null); }
See Also:
  • error.error(String, Object)
/** * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object) */
@Override public void error(String format, Object arg) { log(null, ERROR, format, new Object[]{arg}, null); }
See Also:
  • error.error(String, Object, Object)
/** * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object, java.lang.Object) */
@Override public void error(String format, Object arg1, Object arg2) { log(null, ERROR, format, new Object[]{arg1, arg2}, null); }
See Also:
  • error.error(String, Object[])
/** * @see org.slf4j.Logger#error(java.lang.String, java.lang.Object[]) */
@Override public void error(String format, Object[] argArray) { log(null, ERROR, format, argArray, null); }
See Also:
  • error.error(String, Throwable)
/** * @see org.slf4j.Logger#error(java.lang.String, java.lang.Throwable) */
@Override public void error(String msg, Throwable t) { log(null, ERROR, msg, null, t); }
See Also:
  • error.error(Marker, String)
/** * @see org.slf4j.Logger#error(org.slf4j.Marker, java.lang.String) */
@Override public void error(Marker marker, String msg) { log(marker, ERROR, msg, null, null); }
See Also:
  • error.error(Marker, String, Object)
/** * @see org.slf4j.Logger#error(org.slf4j.Marker, java.lang.String, java.lang.Object) */
@Override public void error(Marker marker, String format, Object arg) { log(marker, ERROR, format, new Object[]{arg}, null); }
See Also:
  • error.error(Marker, String, Object, Object)
/** * @see org.slf4j.Logger#error(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object) */
@Override public void error(Marker marker, String format, Object arg1, Object arg2) { log(marker, ERROR, format, new Object[]{arg1, arg2}, null); }
See Also:
  • error.error(Marker, String, Object[])
/** * @see org.slf4j.Logger#error(org.slf4j.Marker, java.lang.String, java.lang.Object[]) */
@Override public void error(Marker marker, String format, Object[] argArray) { log(marker, ERROR, format, argArray, null); }
See Also:
  • error.error(Marker, String, Throwable)
/** * @see org.slf4j.Logger#error(org.slf4j.Marker, java.lang.String, java.lang.Throwable) */
@Override public void error(Marker marker, String msg, Throwable t) { log(marker, ERROR, msg, null, t); }
See Also:
  • getName.getName()
/** * @see org.slf4j.Logger#getName() */
@Override public String getName() { return _logger.getName(); }
See Also:
  • info.info(String)
/** * @see org.slf4j.Logger#info(java.lang.String) */
@Override public void info(String msg) { log(null, INFO, msg, null, null); }
See Also:
  • info.info(String, Object)
/** * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object) */
@Override public void info(String format, Object arg) { log(null, INFO, format, new Object[]{arg}, null); }
See Also:
  • info.info(String, Object, Object)
/** * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object, java.lang.Object) */
@Override public void info(String format, Object arg1, Object arg2) { log(null, INFO, format, new Object[]{arg1, arg2}, null); }
See Also:
  • info.info(String, Object[])
/** * @see org.slf4j.Logger#info(java.lang.String, java.lang.Object[]) */
@Override public void info(String format, Object[] argArray) { log(null, INFO, format, argArray, null); }
See Also:
  • info.info(String, Throwable)
/** * @see org.slf4j.Logger#info(java.lang.String, java.lang.Throwable) */
@Override public void info(String msg, Throwable t) { log(null, INFO, msg, null, t); }
See Also:
  • info.info(Marker, String)
/** * @see org.slf4j.Logger#info(org.slf4j.Marker, java.lang.String) */
@Override public void info(Marker marker, String msg) { log(marker, INFO, msg, null, null); }
See Also:
  • info.info(Marker, String, Object)
/** * @see org.slf4j.Logger#info(org.slf4j.Marker, java.lang.String, java.lang.Object) */
@Override public void info(Marker marker, String format, Object arg) { log(marker, INFO, format, new Object[]{arg}, null); }
See Also:
  • info.info(Marker, String, Object, Object)
/** * @see org.slf4j.Logger#info(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object) */
@Override public void info(Marker marker, String format, Object arg1, Object arg2) { log(marker, INFO, format, new Object[]{arg1, arg2}, null); }
See Also:
  • info.info(Marker, String, Object[])
/** * @see org.slf4j.Logger#info(org.slf4j.Marker, java.lang.String, java.lang.Object[]) */
@Override public void info(Marker marker, String format, Object[] argArray) { log(marker, INFO, format, argArray, null); }
See Also:
  • info.info(Marker, String, Throwable)
/** * @see org.slf4j.Logger#info(org.slf4j.Marker, java.lang.String, java.lang.Throwable) */
@Override public void info(Marker marker, String msg, Throwable t) { log(marker, INFO, msg, null, t); }
See Also:
  • isDebugEnabled.isDebugEnabled()
/** * @see org.slf4j.Logger#isDebugEnabled() */
@Override public boolean isDebugEnabled() { return _logger.isDebugEnabled(); }
See Also:
  • isDebugEnabled.isDebugEnabled(Marker)
/** * @see org.slf4j.Logger#isDebugEnabled(org.slf4j.Marker) */
@Override public boolean isDebugEnabled(Marker marker) { return _logger.isDebugEnabled(marker); }
See Also:
  • isErrorEnabled.isErrorEnabled()
/** * @see org.slf4j.Logger#isErrorEnabled() */
@Override public boolean isErrorEnabled() { return _logger.isErrorEnabled(); }
See Also:
  • isErrorEnabled.isErrorEnabled(Marker)
/** * @see org.slf4j.Logger#isErrorEnabled(org.slf4j.Marker) */
@Override public boolean isErrorEnabled(Marker marker) { return _logger.isErrorEnabled(marker); }
See Also:
  • isInfoEnabled.isInfoEnabled()
/** * @see org.slf4j.Logger#isInfoEnabled() */
@Override public boolean isInfoEnabled() { return _logger.isInfoEnabled(); }
See Also:
  • isInfoEnabled.isInfoEnabled(Marker)
/** * @see org.slf4j.Logger#isInfoEnabled(org.slf4j.Marker) */
@Override public boolean isInfoEnabled(Marker marker) { return _logger.isInfoEnabled(marker); }
See Also:
  • isTraceEnabled.isTraceEnabled()
/** * @see org.slf4j.Logger#isTraceEnabled() */
@Override public boolean isTraceEnabled() { return _logger.isTraceEnabled(); }
See Also:
  • isTraceEnabled.isTraceEnabled(Marker)
/** * @see org.slf4j.Logger#isTraceEnabled(org.slf4j.Marker) */
@Override public boolean isTraceEnabled(Marker marker) { return _logger.isTraceEnabled(marker); }
See Also:
  • isWarnEnabled.isWarnEnabled()
/** * @see org.slf4j.Logger#isWarnEnabled() */
@Override public boolean isWarnEnabled() { return _logger.isWarnEnabled(); }
See Also:
  • isWarnEnabled.isWarnEnabled(Marker)
/** * @see org.slf4j.Logger#isWarnEnabled(org.slf4j.Marker) */
@Override public boolean isWarnEnabled(Marker marker) { return _logger.isWarnEnabled(marker); } @Override public String toString() { return _logger.toString(); }
See Also:
  • trace.trace(String)
/** * @see org.slf4j.Logger#trace(java.lang.String) */
@Override public void trace(String msg) { log(null, TRACE, msg, null, null); }
See Also:
  • trace.trace(String, Object)
/** * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object) */
@Override public void trace(String format, Object arg) { log(null, TRACE, format, new Object[]{arg}, null); }
See Also:
  • trace.trace(String, Object, Object)
/** * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object, java.lang.Object) */
@Override public void trace(String format, Object arg1, Object arg2) { log(null, TRACE, format, new Object[]{arg1, arg2}, null); }
See Also:
  • trace.trace(String, Object[])
/** * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Object[]) */
@Override public void trace(String format, Object[] argArray) { log(null, TRACE, format, argArray, null); }
See Also:
  • trace.trace(String, Throwable)
/** * @see org.slf4j.Logger#trace(java.lang.String, java.lang.Throwable) */
@Override public void trace(String msg, Throwable t) { log(null, TRACE, msg, null, t); }
See Also:
  • trace.trace(Marker, String)
/** * @see org.slf4j.Logger#trace(org.slf4j.Marker, java.lang.String) */
@Override public void trace(Marker marker, String msg) { log(marker, TRACE, msg, null, null); }
See Also:
  • trace.trace(Marker, String, Object)
/** * @see org.slf4j.Logger#trace(org.slf4j.Marker, java.lang.String, java.lang.Object) */
@Override public void trace(Marker marker, String format, Object arg) { log(marker, TRACE, format, new Object[]{arg}, null); }
See Also:
  • trace.trace(Marker, String, Object, Object)
/** * @see org.slf4j.Logger#trace(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object) */
@Override public void trace(Marker marker, String format, Object arg1, Object arg2) { log(marker, TRACE, format, new Object[]{arg1, arg2}, null); }
See Also:
  • trace.trace(Marker, String, Object[])
/** * @see org.slf4j.Logger#trace(org.slf4j.Marker, java.lang.String, java.lang.Object[]) */
@Override public void trace(Marker marker, String format, Object[] argArray) { log(marker, TRACE, format, argArray, null); }
See Also:
  • trace.trace(Marker, String, Throwable)
/** * @see org.slf4j.Logger#trace(org.slf4j.Marker, java.lang.String, java.lang.Throwable) */
@Override public void trace(Marker marker, String msg, Throwable t) { log(marker, TRACE, msg, null, t); }
See Also:
  • warn.warn(String)
/** * @see org.slf4j.Logger#warn(java.lang.String) */
@Override public void warn(String msg) { log(null, WARN, msg, null, null); }
See Also:
  • warn.warn(String, Object)
/** * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object) */
@Override public void warn(String format, Object arg) { log(null, WARN, format, new Object[]{arg}, null); }
See Also:
  • warn.warn(String, Object[])
/** * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object[]) */
@Override public void warn(String format, Object[] argArray) { log(null, WARN, format, argArray, null); }
See Also:
  • warn.warn(String, Object, Object)
/** * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Object, java.lang.Object) */
@Override public void warn(String format, Object arg1, Object arg2) { log(null, WARN, format, new Object[]{arg1, arg2}, null); }
See Also:
  • warn.warn(String, Throwable)
/** * @see org.slf4j.Logger#warn(java.lang.String, java.lang.Throwable) */
@Override public void warn(String msg, Throwable t) { log(null, WARN, msg, null, t); }
See Also:
  • warn.warn(Marker, String)
/** * @see org.slf4j.Logger#warn(org.slf4j.Marker, java.lang.String) */
@Override public void warn(Marker marker, String msg) { log(marker, WARN, msg, null, null); }
See Also:
  • warn.warn(Marker, String, Object)
/** * @see org.slf4j.Logger#warn(org.slf4j.Marker, java.lang.String, java.lang.Object) */
@Override public void warn(Marker marker, String format, Object arg) { log(marker, WARN, format, new Object[]{arg}, null); }
See Also:
  • warn.warn(Marker, String, Object, Object)
/** * @see org.slf4j.Logger#warn(org.slf4j.Marker, java.lang.String, java.lang.Object, java.lang.Object) */
@Override public void warn(Marker marker, String format, Object arg1, Object arg2) { log(marker, WARN, format, new Object[]{arg1, arg2}, null); }
See Also:
  • warn.warn(Marker, String, Object[])
/** * @see org.slf4j.Logger#warn(org.slf4j.Marker, java.lang.String, java.lang.Object[]) */
@Override public void warn(Marker marker, String format, Object[] argArray) { log(marker, WARN, format, argArray, null); }
See Also:
  • warn.warn(Marker, String, Throwable)
/** * @see org.slf4j.Logger#warn(org.slf4j.Marker, java.lang.String, java.lang.Throwable) */
@Override public void warn(Marker marker, String msg, Throwable t) { log(marker, WARN, msg, null, t); } private void log(Marker marker, int level, String msg, Object[] argArray, Throwable t) { if (argArray == null) { // Simple SLF4J Message (no args) _logger.log(marker, FQCN, level, msg, null, t); } else { int loggerLevel = _logger.isTraceEnabled() ? TRACE : _logger.isDebugEnabled() ? DEBUG : _logger.isInfoEnabled() ? INFO : _logger.isWarnEnabled() ? WARN : ERROR; if (loggerLevel <= level) { // 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); } } } }