From d6d994db5c7a82c03b47270d62681d25dd841ede Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Fri, 8 May 2020 22:03:03 +0200 Subject: [PATCH] Issue #4830 - Add JMX to new Jetty 10 jetty-slf4j-impl. Updates after review. Signed-off-by: Simone Bordet --- .../eclipse/jetty/logging/JettyLogger.java | 227 +++++++++--------- .../logging/JettyLoggerConfiguration.java | 2 +- .../jetty/logging/JettyLoggerFactory.java | 2 +- .../jetty/xml/XmlConfigurationTest.java | 3 +- 4 files changed, 114 insertions(+), 120 deletions(-) diff --git a/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLogger.java b/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLogger.java index 7367a215911b..08c65e7a7a01 100644 --- a/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLogger.java +++ b/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLogger.java @@ -109,6 +109,48 @@ private static String condensePackageString(String classname) return dense.toString(); } + public JettyAppender getAppender() + { + return appender; + } + + String getCondensedName() + { + return condensedName; + } + + public JettyLevel getLevel() + { + return level; + } + + public void setLevel(JettyLevel level) + { + this.level = level; + + // apply setLevel to children too. + factory.walkChildrenLoggers(this.getName(), (logger) -> logger.setLevel(level)); + } + + @Override + public String getName() + { + return name; + } + + public boolean isHideStacks() + { + return hideStacks; + } + + public void setHideStacks(boolean hideStacks) + { + this.hideStacks = hideStacks; + + // apply setHideStacks to children too. + factory.walkChildrenLoggers(this.getName(), (logger) -> logger.setHideStacks(hideStacks)); + } + @Override public void debug(String msg) { @@ -154,12 +196,6 @@ public void debug(String msg, Throwable throwable) } } - @Override - public boolean isDebugEnabled(Marker marker) - { - return isDebugEnabled(); - } - @Override public void debug(Marker marker, String msg) { @@ -195,6 +231,18 @@ public void debug(Marker marker, String msg, Throwable t) debug(msg, t); } + @Override + public boolean isDebugEnabled() + { + return level.includes(JettyLevel.DEBUG); + } + + @Override + public boolean isDebugEnabled(Marker marker) + { + return isDebugEnabled(); + } + @Override public void error(String msg) { @@ -240,12 +288,6 @@ public void error(String msg, Throwable throwable) } } - @Override - public boolean isErrorEnabled(Marker marker) - { - return isErrorEnabled(); - } - @Override public void error(Marker marker, String msg) { @@ -281,65 +323,16 @@ public void error(Marker marker, String msg, Throwable t) error(msg, t); } - public JettyAppender getAppender() - { - return appender; - } - - /** - * Entry point for {@link LocationAwareLogger} - */ @Override - public void log(Marker marker, String fqcn, int levelInt, String message, Object[] argArray, Throwable throwable) - { - if (this.level.toInt() <= levelInt) - { - long timestamp = System.currentTimeMillis(); - String threadName = Thread.currentThread().getName(); - getAppender().emit(this, JettyLevel.intToLevel(levelInt).toLevel(), timestamp, threadName, throwable, message, argArray); - } - } - - /** - * Dynamic (via Reflection) entry point for {@link SubstituteLogger} usage. - * - * @param event the logging event - */ - @SuppressWarnings("unused") - public void log(LoggingEvent event) - { - // TODO: do we want to support org.sfl4j.Marker? - // TODO: do we want to support org.sfl4j.even.KeyValuePair? - getAppender().emit(this, event.getLevel(), event.getTimeStamp(), event.getThreadName(), event.getThrowable(), event.getMessage(), event.getArgumentArray()); - } - - public String getCondensedName() - { - return condensedName; - } - - public JettyLevel getLevel() - { - return level; - } - - public void setLevel(Level level) - { - setLevel(JettyLevel.fromLevel(level)); - } - - public void setLevel(JettyLevel level) + public boolean isErrorEnabled() { - this.level = level; - - // apply setLevel to children too. - factory.walkChildrenLoggers(this.getName(), (logger) -> logger.setLevel(level)); + return level.includes(JettyLevel.ERROR); } @Override - public String getName() + public boolean isErrorEnabled(Marker marker) { - return name; + return isErrorEnabled(); } @Override @@ -387,12 +380,6 @@ public void info(String msg, Throwable throwable) } } - @Override - public boolean isInfoEnabled(Marker marker) - { - return isInfoEnabled(); - } - @Override public void info(Marker marker, String msg) { @@ -428,31 +415,6 @@ public void info(Marker marker, String msg, Throwable t) info(msg, t); } - @Override - public boolean isDebugEnabled() - { - return level.includes(JettyLevel.DEBUG); - } - - @Override - public boolean isErrorEnabled() - { - return level.includes(JettyLevel.ERROR); - } - - public boolean isHideStacks() - { - return hideStacks; - } - - public void setHideStacks(boolean hideStacks) - { - this.hideStacks = hideStacks; - - // apply setHideStacks to children too. - factory.walkChildrenLoggers(this.getName(), (logger) -> logger.setHideStacks(hideStacks)); - } - @Override public boolean isInfoEnabled() { @@ -460,15 +422,9 @@ public boolean isInfoEnabled() } @Override - public boolean isTraceEnabled() - { - return level.includes(JettyLevel.TRACE); - } - - @Override - public boolean isWarnEnabled() + public boolean isInfoEnabled(Marker marker) { - return level.includes(JettyLevel.WARN); + return isInfoEnabled(); } @Override @@ -516,12 +472,6 @@ public void trace(String msg, Throwable throwable) } } - @Override - public boolean isTraceEnabled(Marker marker) - { - return isTraceEnabled(); - } - @Override public void trace(Marker marker, String msg) { @@ -557,6 +507,18 @@ public void trace(Marker marker, String msg, Throwable t) trace(msg, t); } + @Override + public boolean isTraceEnabled() + { + return level.includes(JettyLevel.TRACE); + } + + @Override + public boolean isTraceEnabled(Marker marker) + { + return isTraceEnabled(); + } + @Override public void warn(String msg) { @@ -602,12 +564,6 @@ public void warn(String msg, Throwable throwable) } } - @Override - public boolean isWarnEnabled(Marker marker) - { - return isWarnEnabled(); - } - @Override public void warn(Marker marker, String msg) { @@ -643,6 +599,18 @@ public void warn(Marker marker, String msg, Throwable t) warn(msg, t); } + @Override + public boolean isWarnEnabled() + { + return level.includes(JettyLevel.WARN); + } + + @Override + public boolean isWarnEnabled(Marker marker) + { + return isWarnEnabled(); + } + private void emit(Level level, String msg) { long timestamp = System.currentTimeMillis(); @@ -684,6 +652,33 @@ private void emit(Level level, String msg, Throwable throwable) getAppender().emit(this, level, timestamp, threadName, throwable, msg); } + /** + * Entry point for {@link LocationAwareLogger} + */ + @Override + public void log(Marker marker, String fqcn, int levelInt, String message, Object[] argArray, Throwable throwable) + { + if (this.level.toInt() <= levelInt) + { + long timestamp = System.currentTimeMillis(); + String threadName = Thread.currentThread().getName(); + getAppender().emit(this, JettyLevel.intToLevel(levelInt).toLevel(), timestamp, threadName, throwable, message, argArray); + } + } + + /** + * Dynamic (via Reflection) entry point for {@link SubstituteLogger} usage. + * + * @param event the logging event + */ + @SuppressWarnings("unused") + public void log(LoggingEvent event) + { + // TODO: do we want to support org.sfl4j.Marker? + // TODO: do we want to support org.sfl4j.even.KeyValuePair? + getAppender().emit(this, event.getLevel(), event.getTimeStamp(), event.getThreadName(), event.getThrowable(), event.getMessage(), event.getArgumentArray()); + } + @Override public String toString() { diff --git a/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerConfiguration.java b/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerConfiguration.java index 2f4662aeb344..1f9f28b985de 100644 --- a/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerConfiguration.java +++ b/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerConfiguration.java @@ -145,7 +145,7 @@ protected static JettyLevel toJettyLevel(String loggerName, String levelStr) if (level == null) { System.err.printf("Unknown JettyLogger/Slf4J Level [%s]=[%s], expecting only [%s] as values.", - loggerName, levelStr, Stream.of(JettyLevel.values()).map(JettyLevel::toString).collect(Collectors.joining(", "))); + loggerName, levelStr, Stream.of(JettyLevel.values()).map(JettyLevel::name).collect(Collectors.joining(", "))); } return level; } diff --git a/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerFactory.java b/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerFactory.java index 389a25dbfd35..aa0bda765391 100644 --- a/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerFactory.java +++ b/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerFactory.java @@ -154,7 +154,7 @@ public String getLoggerLevel(String loggerName) { JettyLogger logger = loggerMap.get(key); if (logger != null) - return logger.getLevel().toString(); + return logger.getLevel().name(); return null; }); } diff --git a/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlConfigurationTest.java b/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlConfigurationTest.java index 823aeba8b8dc..6cd7e3fb95aa 100644 --- a/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlConfigurationTest.java +++ b/jetty-xml/src/test/java/org/eclipse/jetty/xml/XmlConfigurationTest.java @@ -55,7 +55,6 @@ import org.junit.jupiter.params.provider.MethodSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.slf4j.event.Level; import org.xml.sax.SAXException; import static java.nio.charset.StandardCharsets.UTF_8; @@ -1602,7 +1601,7 @@ private ByteArrayOutputStream captureLoggingBytes(ThrowableAction action) throws // capture events appender.setStream(new PrintStream(logBytes, true)); // make sure we are seeing WARN level events - jettyLogger.setLevel(Level.WARN); + jettyLogger.setLevel(JettyLevel.WARN); action.run(); }