diff --git a/log4j-api-test/src/test/java/org/apache/logging/log4j/status/StatusConsoleListenerTest.java b/log4j-api-test/src/test/java/org/apache/logging/log4j/status/StatusConsoleListenerTest.java index 909c6a18314..48d9a7346fc 100644 --- a/log4j-api-test/src/test/java/org/apache/logging/log4j/status/StatusConsoleListenerTest.java +++ b/log4j-api-test/src/test/java/org/apache/logging/log4j/status/StatusConsoleListenerTest.java @@ -114,29 +114,6 @@ void level_and_stream_should_be_honored() throws Exception { .doesNotContain(discardedMessage.getFormattedMessage()); } - @Test - void filters_should_be_honored() throws Exception { - - // Create the listener. - final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - final String encoding = "UTF-8"; - final PrintStream printStream = new PrintStream(outputStream, false, encoding); - final StatusConsoleListener listener = new StatusConsoleListener(Level.TRACE, printStream); - - // Set the filter. - final StackTraceElement caller = new StackTraceElement("callerClass", "callerMethod", "callerFile", 1); - listener.setFilters(caller.getClassName()); - - // Log the message to be filtered. - final Message message = MESSAGE_FACTORY.newMessage("foo"); - listener.log(new StatusData(caller, Level.TRACE, message, null, null)); // as set by `StatusLogger` itself - - // Verify the filtering. - printStream.flush(); - final String output = outputStream.toString(encoding); - Assertions.assertThat(output).isEmpty(); - } - @Test void non_system_streams_should_be_closed() throws Exception { final PrintStream stream = Mockito.mock(PrintStream.class); diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java index d00076e65e3..5961b20cbfd 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/status/StatusConsoleListener.java @@ -31,8 +31,6 @@ public class StatusConsoleListener implements StatusListener { private Level level; - private String[] filters; - private final PrintStream stream; private final Logger logger; @@ -92,37 +90,21 @@ public Level getStatusLevel() { */ @Override public void log(final StatusData data) { - final boolean filtered = filtered(data); - if (!filtered) { - logger - // Logging using _only_ the following 4 fields set by `StatusLogger#logMessage()`: - .atLevel(data.getLevel()) - .withThrowable(data.getThrowable()) - .withLocation(data.getStackTraceElement()) - .log(data.getMessage()); - } + logger + // Logging using _only_ the following 4 fields set by `StatusLogger#logMessage()`: + .atLevel(data.getLevel()) + .withThrowable(data.getThrowable()) + .withLocation(data.getStackTraceElement()) + .log(data.getMessage()); } /** * Adds package name filters to exclude. * @param filters An array of package names to exclude. + * @deprecated This method is ineffective and only kept for binary backward compatibility. */ - public void setFilters(final String... filters) { - this.filters = filters; - } - - private boolean filtered(final StatusData data) { - if (filters == null) { - return false; - } - final String caller = data.getStackTraceElement().getClassName(); - for (final String filter : filters) { - if (caller.startsWith(filter)) { - return true; - } - } - return false; - } + @Deprecated + public void setFilters(final String... filters) {} @Override public void close() throws IOException { diff --git a/log4j-core-test/src/main/resources/Log4j-config.xsd b/log4j-core-test/src/main/resources/Log4j-config.xsd index bc6ee915066..a5ae2d28a52 100644 --- a/log4j-core-test/src/main/resources/Log4j-config.xsd +++ b/log4j-core-test/src/main/resources/Log4j-config.xsd @@ -157,11 +157,6 @@ Enables the use of the strict XML format. Not supported in JSON configurations. - - - Enables diagnostic information while loading plugins. - - diff --git a/log4j-core-test/src/test/resources/log4j-customLevelsWithFilters.xml b/log4j-core-test/src/test/resources/log4j-customLevelsWithFilters.xml index 41a1002ce07..84a578dbc33 100644 --- a/log4j-core-test/src/test/resources/log4j-customLevelsWithFilters.xml +++ b/log4j-core-test/src/test/resources/log4j-customLevelsWithFilters.xml @@ -15,7 +15,7 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - + diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java index 389cace738a..f1ec35e06a0 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/BuiltConfiguration.java @@ -28,7 +28,6 @@ import org.apache.logging.log4j.core.config.builder.api.Component; import org.apache.logging.log4j.core.config.plugins.util.PluginManager; import org.apache.logging.log4j.core.config.plugins.util.PluginType; -import org.apache.logging.log4j.core.config.plugins.util.ResolverUtil; import org.apache.logging.log4j.core.config.status.StatusConfiguration; import org.apache.logging.log4j.core.util.Patterns; @@ -39,7 +38,6 @@ * @since 2.4 */ public class BuiltConfiguration extends AbstractConfiguration { - private static final String[] VERBOSE_CLASSES = new String[] {ResolverUtil.class.getName()}; private final StatusConfiguration statusConfig; protected Component rootComponent; private Component loggersComponent; @@ -53,8 +51,7 @@ public class BuiltConfiguration extends AbstractConfiguration { public BuiltConfiguration( final LoggerContext loggerContext, final ConfigurationSource source, final Component rootComponent) { super(loggerContext, source); - statusConfig = - new StatusConfiguration().withVerboseClasses(VERBOSE_CLASSES).withStatus(getDefaultStatus()); + statusConfig = new StatusConfiguration().withStatus(getDefaultStatus()); for (final Component component : rootComponent.getComponents()) { switch (component.getPluginType()) { case "Scripts": { diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java index 2a74ef7069c..633e619b281 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/builder/impl/DefaultConfigurationBuilder.java @@ -81,7 +81,6 @@ public class DefaultConfigurationBuilder implement private ConfigurationSource source; private int monitorInterval; private Level level; - private String verbosity; private String destination; private String packages; private String shutdownFlag; @@ -200,9 +199,6 @@ public T build(final boolean initialize) { if (level != null) { configuration.getStatusConfiguration().withStatus(level); } - if (verbosity != null) { - configuration.getStatusConfiguration().withVerbosity(verbosity); - } if (destination != null) { configuration.getStatusConfiguration().withDestination(destination); } @@ -273,9 +269,6 @@ private void writeXmlConfiguration(final XMLStreamWriter xmlWriter) throws XMLSt if (level != null) { xmlWriter.writeAttribute("status", level.name()); } - if (verbosity != null) { - xmlWriter.writeAttribute("verbose", verbosity); - } if (destination != null) { xmlWriter.writeAttribute("dest", destination); } @@ -596,9 +589,12 @@ public ConfigurationBuilder setStatusLevel(final Level level) { return this; } + /** + * @deprecated This method is ineffective and only kept for binary backward compatibility. + */ @Override + @Deprecated public ConfigurationBuilder setVerbosity(final String verbosity) { - this.verbosity = verbosity; return this; } diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/CompositeConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/CompositeConfiguration.java index ceba4c66084..bf859b1411e 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/CompositeConfiguration.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/composite/CompositeConfiguration.java @@ -31,7 +31,6 @@ import org.apache.logging.log4j.core.config.ConfigurationSource; import org.apache.logging.log4j.core.config.Node; import org.apache.logging.log4j.core.config.Reconfigurable; -import org.apache.logging.log4j.core.config.plugins.util.ResolverUtil; import org.apache.logging.log4j.core.config.status.StatusConfiguration; import org.apache.logging.log4j.core.util.Loader; import org.apache.logging.log4j.core.util.Patterns; @@ -50,8 +49,6 @@ public class CompositeConfiguration extends AbstractConfiguration implements Rec */ public static final String MERGE_STRATEGY_PROPERTY = "log4j.mergeStrategy"; - private static final String[] VERBOSE_CLASSES = new String[] {ResolverUtil.class.getName()}; - private final List configurations; private MergeStrategy mergeStrategy; @@ -79,8 +76,7 @@ public CompositeConfiguration(final List config for (final AbstractConfiguration config : configurations) { mergeStrategy.mergeRootProperties(rootNode, config); } - final StatusConfiguration statusConfig = - new StatusConfiguration().withVerboseClasses(VERBOSE_CLASSES).withStatus(getDefaultStatus()); + final StatusConfiguration statusConfig = new StatusConfiguration().withStatus(getDefaultStatus()); for (final Map.Entry entry : rootNode.getAttributes().entrySet()) { final String key = entry.getKey(); final String value = getConfigurationStrSubstitutor().replace(entry.getValue()); @@ -92,8 +88,6 @@ public CompositeConfiguration(final List config isShutdownHookEnabled = !"disable".equalsIgnoreCase(value); } else if ("shutdownTimeout".equalsIgnoreCase(key)) { shutdownTimeoutMillis = Long.parseLong(value); - } else if ("verbose".equalsIgnoreCase(key)) { - statusConfig.withVerbosity(value); } else if ("packages".equalsIgnoreCase(key)) { pluginPackages.addAll(Arrays.asList(value.split(Patterns.COMMA_SEPARATOR))); } else if ("name".equalsIgnoreCase(key)) { diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java index 24e0d43330d..b574070a433 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/json/JsonConfiguration.java @@ -36,7 +36,6 @@ import org.apache.logging.log4j.core.config.Node; import org.apache.logging.log4j.core.config.Reconfigurable; import org.apache.logging.log4j.core.config.plugins.util.PluginType; -import org.apache.logging.log4j.core.config.plugins.util.ResolverUtil; import org.apache.logging.log4j.core.config.status.StatusConfiguration; import org.apache.logging.log4j.core.util.Integers; import org.apache.logging.log4j.core.util.Patterns; @@ -46,7 +45,6 @@ */ public class JsonConfiguration extends AbstractConfiguration implements Reconfigurable { - private static final String[] VERBOSE_CLASSES = new String[] {ResolverUtil.class.getName()}; private final List status = new ArrayList<>(); private JsonNode root; @@ -66,9 +64,7 @@ public JsonConfiguration(final LoggerContext loggerContext, final ConfigurationS } } processAttributes(rootNode, root); - final StatusConfiguration statusConfig = new StatusConfiguration() - .withVerboseClasses(VERBOSE_CLASSES) - .withStatus(getDefaultStatus()); + final StatusConfiguration statusConfig = new StatusConfiguration().withStatus(getDefaultStatus()); int monitorIntervalSeconds = 0; for (final Map.Entry entry : rootNode.getAttributes().entrySet()) { @@ -83,8 +79,6 @@ public JsonConfiguration(final LoggerContext loggerContext, final ConfigurationS isShutdownHookEnabled = !"disable".equalsIgnoreCase(value); } else if ("shutdownTimeout".equalsIgnoreCase(key)) { shutdownTimeoutMillis = Long.parseLong(value); - } else if ("verbose".equalsIgnoreCase(entry.getKey())) { - statusConfig.withVerbosity(value); } else if ("packages".equalsIgnoreCase(key)) { pluginPackages.addAll(Arrays.asList(value.split(Patterns.COMMA_SEPARATOR))); } else if ("name".equalsIgnoreCase(key)) { diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java index 410337b8982..6cb3806cc99 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/ResolverUtil.java @@ -193,7 +193,7 @@ public void findInPackage(final Test test, String packageName) { final URL url = urls.nextElement(); final String urlPath = extractPath(url); - LOGGER.info("Scanning for classes in '{}' matching criteria {}", urlPath, test); + LOGGER.debug("Scanning for classes in '{}' matching criteria {}", urlPath, test); // Check for a jar in a war in JBoss if (VFSZIP.equals(url.getProtocol())) { final String path = urlPath.substring(0, urlPath.length() - packageName.length() - 2); @@ -457,9 +457,7 @@ protected void addIfMatching(final Test test, final String fqn) { final ClassLoader loader = getClassLoader(); if (test.doesMatchClass()) { final String externalName = fqn.substring(0, fqn.indexOf('.')).replace('/', '.'); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("Checking to see if class {} matches criteria {}", externalName, test); - } + LOGGER.debug("Checking to see if class {} matches criteria {}", externalName, test); final Class type = loader.loadClass(externalName); if (test.matches(type)) { diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java index 36d072ef0e9..616bdfd0881 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/status/StatusConfiguration.java @@ -40,7 +40,6 @@ public class StatusConfiguration { private static final PrintStream DEFAULT_STREAM = System.out; private static final Level DEFAULT_STATUS = Level.ERROR; - private static final Verbosity DEFAULT_VERBOSITY = Verbosity.QUIET; private final Collection errorMessages = new LinkedBlockingQueue<>(); private final StatusLogger logger = StatusLogger.getLogger(); @@ -49,12 +48,12 @@ public class StatusConfiguration { private PrintStream destination = DEFAULT_STREAM; private Level status = DEFAULT_STATUS; - private Verbosity verbosity = DEFAULT_VERBOSITY; - private String[] verboseClasses; /** * Specifies how verbose the StatusLogger should be. + * @deprecated This class is not used anymore and only kept for binary backward compatibility. */ + @Deprecated public enum Verbosity { QUIET, VERBOSE; @@ -64,7 +63,9 @@ public enum Verbosity { * * @param value property value to parse. * @return enum corresponding to value, or QUIET by default. + * @deprecated This class is not used anymore and only kept for binary backward compatibility. */ + @Deprecated public static Verbosity toVerbosity(final String value) { return Boolean.parseBoolean(value) ? VERBOSE : QUIET; } @@ -156,9 +157,10 @@ public StatusConfiguration withStatus(final Level status) { * * @param verbosity basic filter for status logger messages. * @return {@code this} + * @deprecated This method is ineffective and only kept for binary backward compatibility. */ + @Deprecated public StatusConfiguration withVerbosity(final String verbosity) { - this.verbosity = Verbosity.toVerbosity(verbosity); return this; } @@ -167,9 +169,10 @@ public StatusConfiguration withVerbosity(final String verbosity) { * * @param verboseClasses names of classes to filter if not using VERBOSE. * @return {@code this} + * @deprecated This method is ineffective and only kept for binary backward compatibility. */ + @Deprecated public StatusConfiguration withVerboseClasses(final String... verboseClasses) { - this.verboseClasses = verboseClasses; return this; } @@ -183,7 +186,8 @@ public void initialize() { } else { final boolean configured = configureExistingStatusConsoleListener(); if (!configured) { - registerNewStatusConsoleListener(); + final StatusConsoleListener listener = new StatusConsoleListener(this.status, this.destination); + this.logger.registerListener(listener); } migrateSavedLogMessages(); } @@ -197,23 +201,12 @@ private boolean configureExistingStatusConsoleListener() { final StatusConsoleListener listener = (StatusConsoleListener) statusListener; listener.setLevel(this.status); this.logger.updateListenerLevel(this.status); - if (this.verbosity == Verbosity.QUIET) { - listener.setFilters(this.verboseClasses); - } configured = true; } } return configured; } - private void registerNewStatusConsoleListener() { - final StatusConsoleListener listener = new StatusConsoleListener(this.status, this.destination); - if (this.verbosity == Verbosity.QUIET) { - listener.setFilters(this.verboseClasses); - } - this.logger.registerListener(listener); - } - private void migrateSavedLogMessages() { for (final String message : this.errorMessages) { this.logger.error(message); diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java index 2f3bd21f957..6f6d2f1233c 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/xml/XmlConfiguration.java @@ -40,7 +40,6 @@ import org.apache.logging.log4j.core.config.Node; import org.apache.logging.log4j.core.config.Reconfigurable; import org.apache.logging.log4j.core.config.plugins.util.PluginType; -import org.apache.logging.log4j.core.config.plugins.util.ResolverUtil; import org.apache.logging.log4j.core.config.status.StatusConfiguration; import org.apache.logging.log4j.core.util.Closer; import org.apache.logging.log4j.core.util.Integers; @@ -63,7 +62,6 @@ public class XmlConfiguration extends AbstractConfiguration implements Reconfigu private static final String XINCLUDE_FIXUP_LANGUAGE = "http://apache.org/xml/features/xinclude/fixup-language"; private static final String XINCLUDE_FIXUP_BASE_URIS = "http://apache.org/xml/features/xinclude/fixup-base-uris"; - private static final String[] VERBOSE_CLASSES = new String[] {ResolverUtil.class.getName()}; private static final String LOG4J_XSD = "Log4j-config.xsd"; private final List status = new ArrayList<>(); @@ -108,9 +106,7 @@ public XmlConfiguration(final LoggerContext loggerContext, final ConfigurationSo } rootElement = document.getDocumentElement(); final Map attrs = processAttributes(rootNode, rootElement); - final StatusConfiguration statusConfig = new StatusConfiguration() - .withVerboseClasses(VERBOSE_CLASSES) - .withStatus(getDefaultStatus()); + final StatusConfiguration statusConfig = new StatusConfiguration().withStatus(getDefaultStatus()); int monitorIntervalSeconds = 0; for (final Map.Entry entry : attrs.entrySet()) { final String key = entry.getKey(); @@ -123,8 +119,6 @@ public XmlConfiguration(final LoggerContext loggerContext, final ConfigurationSo isShutdownHookEnabled = !"disable".equalsIgnoreCase(value); } else if ("shutdownTimeout".equalsIgnoreCase(key)) { shutdownTimeoutMillis = Long.parseLong(value); - } else if ("verbose".equalsIgnoreCase(key)) { - statusConfig.withVerbosity(value); } else if ("packages".equalsIgnoreCase(key)) { pluginPackages.addAll(Arrays.asList(value.split(Patterns.COMMA_SEPARATOR))); } else if ("name".equalsIgnoreCase(key)) { diff --git a/log4j-core/src/main/resources/Log4j-config.xsd b/log4j-core/src/main/resources/Log4j-config.xsd index bc6ee915066..a5ae2d28a52 100644 --- a/log4j-core/src/main/resources/Log4j-config.xsd +++ b/log4j-core/src/main/resources/Log4j-config.xsd @@ -157,11 +157,6 @@ Enables the use of the strict XML format. Not supported in JSON configurations. - - - Enables diagnostic information while loading plugins. - - diff --git a/src/changelog/.2.x.x/deprecate_StatusConsoleListener_filters.xml b/src/changelog/.2.x.x/deprecate_StatusConsoleListener_filters.xml new file mode 100644 index 00000000000..ab13534cb01 --- /dev/null +++ b/src/changelog/.2.x.x/deprecate_StatusConsoleListener_filters.xml @@ -0,0 +1,8 @@ + + + + +