You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ro...@apache.org on 2022/05/23 16:09:31 UTC
[activemq-artemis] 02/02: remove log config reloader that depends on jboss logmanager
This is an automated email from the ASF dual-hosted git repository.
robbie pushed a commit to branch new-logging
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
commit de19847863b444a791b7dd7f8a713c310346bb46
Author: Robbie Gemmell <ro...@apache.org>
AuthorDate: Mon May 23 17:04:23 2022 +0100
remove log config reloader that depends on jboss logmanager
---
.../server/LoggingConfigurationFileReloader.java | 89 ----
.../core/server/LoggingConfigurationUpdater.java | 447 ---------------------
.../core/server/impl/ActiveMQServerImpl.java | 10 -
.../LoggingConfigurationFileReloaderTest.java | 130 ------
.../src/test/resources/reload-logging-1.properties | 21 -
.../src/test/resources/reload-logging-2.properties | 21 -
6 files changed, 718 deletions(-)
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/LoggingConfigurationFileReloader.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/LoggingConfigurationFileReloader.java
deleted file mode 100644
index b96c24cb6e..0000000000
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/LoggingConfigurationFileReloader.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.activemq.artemis.core.server;
-
-import java.io.InputStream;
-import java.net.URL;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.apache.activemq.artemis.core.server.reload.ReloadCallback;
-import org.jboss.logmanager.Configurator;
-import org.jboss.logmanager.LogContext;
-import org.jboss.logmanager.PropertyConfigurator;
-import org.jboss.logmanager.config.LogContextConfiguration;
-
-public class LoggingConfigurationFileReloader implements ReloadCallback {
-
- private final Lock lock = new ReentrantLock();
- private final org.jboss.logmanager.Logger.AttachmentKey<LoggingConfigurationUpdater> KEY = new org.jboss.logmanager.Logger.AttachmentKey<>();
-
- @Override
- public void reload(URL uri) throws Exception {
- ActiveMQServerLogger.LOGGER.reloadingConfiguration("logging");
- final LoggingConfigurationUpdater updater = getOrCreateUpdater();
- if (updater == null) {
- ActiveMQServerLogger.LOGGER.loggingReloadFailed(uri.toString(), null);
- return;
- }
- try (InputStream in = uri.openStream()) {
- lock.lock();
- updater.configure(in);
- } catch (Exception e) {
- ActiveMQServerLogger.LOGGER.loggingReloadFailed(uri.toString(), e);
- } finally {
- lock.unlock();
- }
- }
-
- private LoggingConfigurationUpdater getOrCreateUpdater() {
- final LogContext logContext = LogContext.getLogContext();
- final org.jboss.logmanager.Logger rootLogger = logContext.getLogger("");
- LoggingConfigurationUpdater updater = rootLogger.getAttachment(KEY);
- if (updater == null) {
- final LogContextConfiguration logContextConfiguration = getOrCreateConfiguration(rootLogger);
- if (logContextConfiguration == null) {
- return null;
- }
- updater = new LoggingConfigurationUpdater(logContextConfiguration);
- final LoggingConfigurationUpdater appearing = rootLogger.attachIfAbsent(KEY, updater);
- if (appearing != null) {
- updater = appearing;
- }
- }
- return updater;
- }
-
- private LogContextConfiguration getOrCreateConfiguration(final org.jboss.logmanager.Logger rootLogger) {
- Configurator configurator = rootLogger.getAttachment(Configurator.ATTACHMENT_KEY);
- if (configurator == null) {
- configurator = new PropertyConfigurator(rootLogger.getLogContext());
- final Configurator appearing = rootLogger.attachIfAbsent(Configurator.ATTACHMENT_KEY, configurator);
- if (appearing != null) {
- configurator = appearing;
- }
- }
- if (configurator instanceof PropertyConfigurator) {
- return ((PropertyConfigurator) configurator).getLogContextConfiguration();
- }
- if (configurator instanceof LogContextConfiguration) {
- return (LogContextConfiguration) configurator;
- }
- return null;
- }
-}
\ No newline at end of file
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/LoggingConfigurationUpdater.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/LoggingConfigurationUpdater.java
deleted file mode 100644
index f8be8e967d..0000000000
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/LoggingConfigurationUpdater.java
+++ /dev/null
@@ -1,447 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.activemq.artemis.core.server;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Objects;
-import java.util.Properties;
-import java.util.regex.Pattern;
-
-import org.jboss.logmanager.config.ErrorManagerConfiguration;
-import org.jboss.logmanager.config.FilterConfiguration;
-import org.jboss.logmanager.config.FormatterConfiguration;
-import org.jboss.logmanager.config.HandlerConfiguration;
-import org.jboss.logmanager.config.HandlerContainingConfigurable;
-import org.jboss.logmanager.config.LogContextConfiguration;
-import org.jboss.logmanager.config.LoggerConfiguration;
-import org.jboss.logmanager.config.PojoConfiguration;
-import org.jboss.logmanager.config.PropertyConfigurable;
-import org.jboss.logmanager.config.ValueExpression;
-
-public class LoggingConfigurationUpdater {
-
- private static final String[] EMPTY_STRINGS = new String[0];
- private static final Pattern EXPRESSION_PATTERN = Pattern.compile(".*\\$\\{.*\\}.*");
- private static final String LOGGERS = "loggers";
- private static final String HANDLERS = "handlers";
- private static final String FILTERS = "filters";
- private static final String FORMATTERS = "formatters";
- private static final String ERROR_MANAGERS = "errorManagers";
- private static final String POJOS = "pojos";
- private static final String LOGGER = "logger";
- private static final String LEVEL = "level";
- private static final String HANDLER = "handler";
- private static final String FORMATTER = "formatter";
- private static final String ENCODING = "encoding";
- private static final String ERROR_MANAGER = "errorManager";
- private static final String POST_CONFIGURATION = "postConfiguration";
- private static final String POJO = "pojo";
- private static final String MODULE = "module";
- private static final String PROPERTIES = "properties";
- private static final String FILTER = "filter";
- private static final String CONSTRUCTOR_PROPERTIES = "constructorProperties";
- private static final String USE_PARENT_HANDLERS = "useParentHandlers";
-
- private final LogContextConfiguration config;
-
- public LoggingConfigurationUpdater(final LogContextConfiguration config) {
- this.config = config;
- }
-
- /**
- * {@inheritDoc}
- */
- public void configure(final InputStream inputStream) throws IOException {
- final Properties properties = new Properties();
- try {
- properties.load(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
- inputStream.close();
- } finally {
- safeClose(inputStream);
- }
- configure(properties);
- }
-
- /**
- * Configure the log manager from the given properties.
- * <p/>
- * The following values read in from a configuration will be trimmed of prefixed and trailing whitespace:
- * <pre>
- * <ul>
- * <li>logger.NAME.filter</li>
- * <li>logger.NAME.level</li>
- * <li>logger.NAME.useParentHandlers</li>
- * <li>handler.NAME.filter</li>
- * <li>handler.NAME.formatter</li>
- * <li>handler.NAME.level</li>
- * <li>handler.NAME.encoding</li>
- * <li>handler.NAME.errorManager</li>
- * </ul>
- * </pre>
- *
- * @param properties the properties
- */
- private void configure(final Properties properties) {
- try {
- final Collection<String> handlersToRemove = config.getHandlerNames();
- // Start with the list of loggers to configure. The root logger is always on the list.
- handlersToRemove.removeAll(configureLogger(properties, ""));
-
- // And, for each logger name, configure any filters, handlers, etc.
- final String[] loggerNames = getStringCsvArray(properties, LOGGERS);
- for (String loggerName : loggerNames) {
- handlersToRemove.removeAll(configureLogger(properties, loggerName));
- }
- // Remove any loggers that are not longer required
- final Collection<String> loggersToRemove = config.getLoggerNames();
- loggersToRemove.remove("");
- loggersToRemove.removeAll(Arrays.asList(loggerNames));
- for (String loggerName : loggersToRemove) {
- config.removeLoggerConfiguration(loggerName);
- }
-
- // Configure any declared handlers.
- final String[] handlerNames = getStringCsvArray(properties, HANDLERS);
- for (String handlerName : handlerNames) {
- configureHandler(properties, handlerName);
- }
- // Remove any handlers that are not longer required
- handlersToRemove.removeAll(Arrays.asList(handlerNames));
- for (String handlerName : handlersToRemove) {
- config.removeHandlerConfiguration(handlerName);
- }
-
- // Configure any declared filters.
- for (String filterName : getStringCsvArray(properties, FILTERS)) {
- configureFilter(properties, filterName);
- }
-
- // Configure any declared formatters.
- for (String formatterName : getStringCsvArray(properties, FORMATTERS)) {
- configureFormatter(properties, formatterName);
- }
-
- // Configure any declared error managers.
- for (String errorManagerName : getStringCsvArray(properties, ERROR_MANAGERS)) {
- configureErrorManager(properties, errorManagerName);
- }
-
- // Configure POJOs
- for (String pojoName : getStringCsvArray(properties, POJOS)) {
- configurePojos(properties, pojoName);
- }
- config.commit();
- } finally {
- config.forget();
- }
- }
-
- private List<String> configureLogger(final Properties properties, final String loggerName) {
- final LoggerConfiguration loggerConfiguration;
- if (config.getLoggerNames().contains(loggerName)) {
- loggerConfiguration = config.getLoggerConfiguration(loggerName);
- } else {
- loggerConfiguration = config.addLoggerConfiguration(loggerName);
- }
-
- // Get logger level
- final String levelName = getStringProperty(properties, getKey(LOGGER, loggerName, LEVEL));
- if (notEqual(levelName, loggerConfiguration.getLevelValueExpression())) {
- loggerConfiguration.setLevel(levelName == null ? "ALL" : levelName);
- }
-
- // Get logger filter
- final String filterName = getStringProperty(properties, getKey(LOGGER, loggerName, FILTER));
- final ValueExpression<String> newValue = ValueExpression.STRING_RESOLVER.resolve(filterName);
- if (notEqual(newValue, loggerConfiguration.getFilterValueExpression())) {
- loggerConfiguration.setFilter(filterName);
- final String resolvedFilter = loggerConfiguration.getFilterValueExpression().getResolvedValue();
- if (resolvedFilter != null) {
- // Check for a filter class
- final String filterClassName = getStringProperty(properties, getKey(FILTER, resolvedFilter));
- // If the filter class is null, assume it's a filter expression
- if (filterClassName != null) {
- configureFilter(properties, resolvedFilter);
- }
- }
- }
-
- // Get logger handlers
- configureHandlerNames(properties, loggerConfiguration, LOGGER, loggerName);
-
- // Get logger properties
- final String useParentHandlersString = getStringProperty(properties, getKey(LOGGER, loggerName, USE_PARENT_HANDLERS));
- if (booleanNotEqual(useParentHandlersString, loggerConfiguration.getUseParentHandlersValueExpression())) {
- // Check for expression
- if (EXPRESSION_PATTERN.matcher(useParentHandlersString).matches()) {
- loggerConfiguration.setUseParentHandlers(useParentHandlersString);
- } else {
- loggerConfiguration.setUseParentHandlers(Boolean.parseBoolean(useParentHandlersString));
- }
- }
- return loggerConfiguration.getHandlerNames();
- }
-
- private void configureFilter(final Properties properties, final String filterName) {
- final String className = getStringProperty(properties, getKey(FILTER, filterName));
- if (className == null) {
- // Assume we're using a filter expression
- return;
- }
- final FilterConfiguration configuration;
- if (config.getFilterNames().contains(filterName)) {
- configuration = config.getFilterConfiguration(filterName);
- } else {
- configuration = config.addFilterConfiguration(getStringProperty(properties, getKey(FILTER, filterName, MODULE)), className, filterName, getStringCsvArray(properties, getKey(FILTER, filterName, CONSTRUCTOR_PROPERTIES)));
- }
- final String[] postConfigurationMethods = getStringCsvArray(properties, getKey(FILTER, filterName, POST_CONFIGURATION));
- configuration.setPostConfigurationMethods(postConfigurationMethods);
- configureProperties(properties, configuration, getKey(FILTER, filterName));
- }
-
- private boolean configureFormatter(final Properties properties, final String formatterName) {
- final String className = getStringProperty(properties, getKey(FORMATTER, formatterName));
- if (className == null) {
- printError("Formatter %s is not defined%n", formatterName);
- return false;
- }
- final FormatterConfiguration configuration;
- if (config.getFormatterNames().contains(formatterName)) {
- configuration = config.getFormatterConfiguration(formatterName);
- } else {
- configuration = config.addFormatterConfiguration(getStringProperty(properties, getKey(FORMATTER, formatterName, MODULE)), className, formatterName, getStringCsvArray(properties, getKey(FORMATTER, formatterName, CONSTRUCTOR_PROPERTIES)));
- }
- final String[] postConfigurationMethods = getStringCsvArray(properties, getKey(FORMATTER, formatterName, POST_CONFIGURATION));
- configuration.setPostConfigurationMethods(postConfigurationMethods);
- configureProperties(properties, configuration, getKey(FORMATTER, formatterName));
- return true;
- }
-
- private boolean configureErrorManager(final Properties properties, final String errorManagerName) {
- final String className = getStringProperty(properties, getKey(ERROR_MANAGER, errorManagerName));
- if (className == null) {
- printError("Error manager %s is not defined%n", errorManagerName);
- return false;
- }
- final ErrorManagerConfiguration configuration;
- if (config.getErrorManagerNames().contains(errorManagerName)) {
- configuration = config.getErrorManagerConfiguration(errorManagerName);
- } else {
- configuration = config.addErrorManagerConfiguration(getStringProperty(properties, getKey(ERROR_MANAGER, errorManagerName, MODULE)), className, errorManagerName, getStringCsvArray(properties, getKey(ERROR_MANAGER, errorManagerName, CONSTRUCTOR_PROPERTIES)));
- }
- final String[] postConfigurationMethods = getStringCsvArray(properties, getKey(ERROR_MANAGER, errorManagerName, POST_CONFIGURATION));
- configuration.setPostConfigurationMethods(postConfigurationMethods);
- configureProperties(properties, configuration, getKey(ERROR_MANAGER, errorManagerName));
- return true;
- }
-
- private boolean configureHandler(final Properties properties, final String handlerName) {
- final String className = getStringProperty(properties, getKey(HANDLER, handlerName));
- if (className == null) {
- printError("Handler %s is not defined%n", handlerName);
- return false;
- }
- final HandlerConfiguration configuration;
- if (config.getHandlerNames().contains(handlerName)) {
- configuration = config.getHandlerConfiguration(handlerName);
- } else {
- configuration = config.addHandlerConfiguration(getStringProperty(properties, getKey(HANDLER, handlerName, MODULE)), className, handlerName, getStringCsvArray(properties, getKey(HANDLER, handlerName, CONSTRUCTOR_PROPERTIES)));
- }
- final String filter = getStringProperty(properties, getKey(HANDLER, handlerName, FILTER));
- if (notEqual(filter, configuration.getFilterValueExpression())) {
- configuration.setFilter(filter);
- final String resolvedFilter = configuration.getFilterValueExpression().getResolvedValue();
- if (resolvedFilter != null) {
- // Check for a filter class
- final String filterClassName = getStringProperty(properties, getKey(FILTER, resolvedFilter));
- // If the filter class is null, assume it's a filter expression
- if (filterClassName != null) {
- configureFilter(properties, resolvedFilter);
- }
- }
- }
- final String levelName = getStringProperty(properties, getKey(HANDLER, handlerName, LEVEL));
- if (notEqual(levelName, configuration.getLevelValueExpression())) {
- configuration.setLevel(levelName == null ? "ALL" : levelName);
- }
- final String formatterName = getStringProperty(properties, getKey(HANDLER, handlerName, FORMATTER));
- if (formatterName != null) {
- if (getStringProperty(properties, getKey(FORMATTER, ValueExpression.STRING_RESOLVER.resolve(formatterName).getResolvedValue())) == null) {
- printError("Formatter %s is not defined%n", formatterName);
- } else {
- final ValueExpression<String> newValue = ValueExpression.STRING_RESOLVER.resolve(formatterName);
- if (notEqual(newValue, configuration.getFormatterNameValueExpression())) {
- if (configureFormatter(properties, newValue.getResolvedValue())) {
- configuration.setFormatterName(formatterName);
- }
- }
- }
- }
- final String encoding = getStringProperty(properties, getKey(HANDLER, handlerName, ENCODING));
- if (notEqual(encoding, configuration.getEncodingValueExpression())) {
- configuration.setEncoding(encoding);
- }
- final String errorManagerName = getStringProperty(properties, getKey(HANDLER, handlerName, ERROR_MANAGER));
- if (errorManagerName != null) {
- if (getStringProperty(properties, getKey(ERROR_MANAGER, ValueExpression.STRING_RESOLVER.resolve(errorManagerName).getResolvedValue())) == null) {
- printError("Error manager %s is not defined%n", errorManagerName);
- } else {
- final ValueExpression<String> newValue = ValueExpression.STRING_RESOLVER.resolve(errorManagerName);
- if (notEqual(newValue, configuration.getErrorManagerNameValueExpression())) {
- if (configureErrorManager(properties, newValue.getResolvedValue())) {
- configuration.setErrorManagerName(errorManagerName);
- }
- }
- }
- }
- configureHandlerNames(properties, configuration, HANDLER, handlerName);
- final String[] postConfigurationMethods = getStringCsvArray(properties, getKey(HANDLER, handlerName, POST_CONFIGURATION));
- configuration.setPostConfigurationMethods(postConfigurationMethods);
- configureProperties(properties, configuration, getKey(HANDLER, handlerName));
- return true;
- }
-
- private void configurePojos(final Properties properties, final String pojoName) {
- final String className = getStringProperty(properties, getKey(POJO, pojoName));
- if (className == null) {
- printError("POJO %s is not defined%n", pojoName);
- return;
- }
- final PojoConfiguration configuration;
- if (config.getPojoNames().contains(pojoName)) {
- configuration = config.getPojoConfiguration(pojoName);
- } else {
- configuration = config.addPojoConfiguration(getStringProperty(properties, getKey(POJO, pojoName, MODULE)), getStringProperty(properties, getKey(POJO, pojoName)), pojoName, getStringCsvArray(properties, getKey(POJO, pojoName, CONSTRUCTOR_PROPERTIES)));
- }
- final String[] postConfigurationMethods = getStringCsvArray(properties, getKey(POJO, pojoName, POST_CONFIGURATION));
- configuration.setPostConfigurationMethods(postConfigurationMethods);
- configureProperties(properties, configuration, getKey(POJO, pojoName));
- }
-
- private void configureProperties(final Properties properties,
- final PropertyConfigurable configurable,
- final String prefix) {
- final List<String> propertyNames = getStringCsvList(properties, getKey(prefix, PROPERTIES));
- for (String propertyName : propertyNames) {
- final String valueString = getStringProperty(properties, getKey(prefix, propertyName), false);
- if (notEqual(valueString, configurable.getPropertyValueExpression(propertyName))) {
- configurable.setPropertyValueString(propertyName, valueString);
- }
- }
- }
-
- private void configureHandlerNames(final Properties properties,
- final HandlerContainingConfigurable configuration,
- final String prefix,
- final String name) {
- final String[] handlerNames = getStringCsvArray(properties, getKey(prefix, name, HANDLERS));
- final Collection<String> availableHandlers = new ArrayList<>();
- for (String handlerName : handlerNames) {
- if (configureHandler(properties, handlerName)) {
- availableHandlers.add(handlerName);
- }
- }
- configuration.setHandlerNames(availableHandlers);
- }
-
- private static String getKey(final String prefix, final String objectName) {
- return objectName.length() > 0 ? prefix + "." + objectName : prefix;
- }
-
- private static String getKey(final String prefix, final String objectName, final String key) {
- return objectName.length() > 0 ? prefix + "." + objectName + "." + key : prefix + "." + key;
- }
-
- private static String getStringProperty(final Properties properties, final String key) {
- return getStringProperty(properties, key, true);
- }
-
- private static String getStringProperty(final Properties properties, final String key, final boolean trim) {
- final String value = properties.getProperty(key);
- return (trim ? (value == null ? null : value.trim()) : value);
- }
-
- private static String[] getStringCsvArray(final Properties properties, final String key) {
- final String property = properties.getProperty(key, "");
- if (property == null) {
- return EMPTY_STRINGS;
- }
- final String value = property.trim();
- if (value.length() == 0) {
- return EMPTY_STRINGS;
- }
- return value.split("\\s*,\\s*");
- }
-
- private static List<String> getStringCsvList(final Properties properties, final String key) {
- return new ArrayList<>(Arrays.asList(getStringCsvArray(properties, key)));
- }
-
- private static void printError(final String format, final Object... args) {
- System.err.printf(format, args);
- }
-
- private static void safeClose(final Closeable stream) {
- if (stream != null)
- try {
- stream.close();
- } catch (Exception e) {
- // can't do anything about it
- }
- }
-
- private static boolean notEqual(final ValueExpression<String> newValue, final ValueExpression<String> currentValue) {
- if (newValue == null) {
- return currentValue.getResolvedValue() != null;
- }
- return !Objects.equals(newValue.getValue(), currentValue.getValue());
- }
-
- private static boolean notEqual(final String newValue, final ValueExpression<String> currentValue) {
- if (newValue == null) {
- return currentValue.getResolvedValue() != null;
- }
- if (currentValue.isExpression()) {
- final String resolvedCurrentValue = currentValue.getResolvedValue();
- final String resolvedNewValue = ValueExpression.STRING_RESOLVER.resolve(newValue).getResolvedValue();
- return resolvedCurrentValue == null ? resolvedNewValue != null : !resolvedCurrentValue.equals(resolvedNewValue);
- }
- return !newValue.equals(currentValue.getValue());
- }
-
- private static boolean booleanNotEqual(final String newValue, final ValueExpression<Boolean> currentValue) {
- if (newValue == null) {
- return currentValue.getResolvedValue() != null;
- }
- if (currentValue.isExpression()) {
- final Boolean resolvedCurrentValue = currentValue.getResolvedValue();
- final Boolean resolvedNewValue = ValueExpression.BOOLEAN_RESOLVER.resolve(newValue).getResolvedValue();
- return resolvedCurrentValue == null ? resolvedNewValue != null : !resolvedCurrentValue.equals(resolvedNewValue);
- }
- return !newValue.equals(currentValue.getValue());
- }
-
-}
\ No newline at end of file
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
index e3c19eb576..5efe59bba4 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
@@ -128,7 +128,6 @@ import org.apache.activemq.artemis.core.server.BrokerConnection;
import org.apache.activemq.artemis.core.server.Divert;
import org.apache.activemq.artemis.core.server.JournalType;
import org.apache.activemq.artemis.core.server.LargeServerMessage;
-import org.apache.activemq.artemis.core.server.LoggingConfigurationFileReloader;
import org.apache.activemq.artemis.core.server.MemoryManager;
import org.apache.activemq.artemis.core.server.MessageReference;
import org.apache.activemq.artemis.core.server.NetworkHealthCheck;
@@ -3209,15 +3208,6 @@ public class ActiveMQServerImpl implements ActiveMQServer {
if (configuration.getConfigurationUrl() != null && getScheduledPool() != null) {
reloadManager.addCallback(configuration.getConfigurationUrl(), uri -> reloadConfigurationFile(uri));
}
-
- if (System.getProperty("logging.configuration") != null) {
- try {
- reloadManager.addCallback(new URL(System.getProperty("logging.configuration")), new LoggingConfigurationFileReloader());
- } catch (Exception e) {
- // a syntax error with the logging system property shouldn't prevent the server from starting
- ActiveMQServerLogger.LOGGER.problemAddingConfigReloadCallback(System.getProperty("logging.configuration"), e);
- }
- }
}
if (hasBrokerPlugins()) {
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/reload/LoggingConfigurationFileReloaderTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/reload/LoggingConfigurationFileReloaderTest.java
deleted file mode 100644
index 9ddab44935..0000000000
--- a/artemis-server/src/test/java/org/apache/activemq/artemis/core/reload/LoggingConfigurationFileReloaderTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.activemq.artemis.core.reload;
-
-import java.util.logging.LogManager;
-
-import org.apache.activemq.artemis.core.server.LoggingConfigurationFileReloader;
-import org.apache.activemq.artemis.utils.ClassloadingUtil;
-import org.apache.activemq.artemis.utils.SpawnedVMSupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.junit.Assert;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runners.MethodSorters;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-//TODO: This is testing JBoss Logging reloading via LoggingConfigurationFileReloader, it should be updated or removed if using something else
-@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class LoggingConfigurationFileReloaderTest {
-
- private static final LogManager logManager = LogManager.getLogManager();
- private static final Logger root = LoggerFactory.getLogger("");
- private static final Logger test1 = LoggerFactory.getLogger("test1");
- private static final Logger test2 = LoggerFactory.getLogger("test2");
- private static final Logger test3 = LoggerFactory.getLogger("test3");
-
- public static void main(String[] args) {
- try {
- LoggingConfigurationFileReloaderTest test = new LoggingConfigurationFileReloaderTest();
- test.doTestA();
- System.exit(0);
- } catch (Throwable e) {
- System.exit(1);
- }
- }
-
- @Test
- public void testA() throws Exception {
- Process p = SpawnedVMSupport.spawnVM(LoggingConfigurationFileReloaderTest.class.getName());
- Assert.assertEquals(0, p.waitFor());
- }
-
- public void doTestA() throws Exception {
-
- /** This is making sure we won't mess with the configuration for other tests */
- validateInitialLoggers();
-
- LoggingConfigurationFileReloader loggingConfigurationFileReloader = new LoggingConfigurationFileReloader();
- loggingConfigurationFileReloader.reload(ClassloadingUtil.findResource("reload-logging-1.properties"));
-
- assertTrue(root.isErrorEnabled());
- assertTrue(root.isWarnEnabled());
- assertFalse(root.isInfoEnabled());
- assertFalse(root.isDebugEnabled());
- assertFalse(root.isTraceEnabled());
-
- assertTrue(test1.isErrorEnabled());
- assertTrue(test1.isWarnEnabled());
- assertTrue(test1.isInfoEnabled());
- assertTrue(test1.isDebugEnabled());
- assertTrue(test1.isTraceEnabled());
-
- assertTrue(test2.isErrorEnabled());
- assertFalse(test2.isWarnEnabled());
- assertFalse(test2.isInfoEnabled());
- assertFalse(test2.isDebugEnabled());
- assertFalse(test2.isTraceEnabled());
-
- loggingConfigurationFileReloader.reload(ClassloadingUtil.findResource("reload-logging-2.properties"));
-
- assertTrue(root.isErrorEnabled());
- assertFalse(root.isWarnEnabled());
- assertFalse(root.isInfoEnabled());
- assertFalse(root.isDebugEnabled());
- assertFalse(root.isTraceEnabled());
-
- assertTrue(test1.isErrorEnabled());
- assertTrue(test1.isWarnEnabled());
- assertFalse(test1.isInfoEnabled());
- assertFalse(test1.isDebugEnabled());
- assertFalse(test1.isTraceEnabled());
-
- assertTrue(test3.isErrorEnabled());
- assertTrue(test3.isWarnEnabled());
- assertTrue(test3.isInfoEnabled());
- assertTrue(test3.isDebugEnabled());
- assertFalse(test3.isTraceEnabled());
- }
-
- @Test
- public void testB() {
- validateInitialLoggers();
- }
-
- public void validateInitialLoggers() {
- // everything defaults to INFO
- assertTrue(root.isErrorEnabled());
- assertTrue(root.isWarnEnabled());
- assertFalse(root.isDebugEnabled());
- assertFalse(root.isTraceEnabled());
-
- assertTrue(test1.isErrorEnabled());
- assertTrue(test1.isWarnEnabled());
- assertFalse(test1.isDebugEnabled());
- assertFalse(test1.isTraceEnabled());
-
- assertTrue(test2.isErrorEnabled());
- assertTrue(test2.isWarnEnabled());
- assertFalse(test2.isDebugEnabled());
- assertFalse(test2.isTraceEnabled());
- }
-}
\ No newline at end of file
diff --git a/artemis-server/src/test/resources/reload-logging-1.properties b/artemis-server/src/test/resources/reload-logging-1.properties
deleted file mode 100644
index 7aba821f29..0000000000
--- a/artemis-server/src/test/resources/reload-logging-1.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-loggers=test1,test2
-logger.test1.level=TRACE
-logger.test2.level=ERROR
-logger.level=WARN
\ No newline at end of file
diff --git a/artemis-server/src/test/resources/reload-logging-2.properties b/artemis-server/src/test/resources/reload-logging-2.properties
deleted file mode 100644
index 8ff0a5f07b..0000000000
--- a/artemis-server/src/test/resources/reload-logging-2.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-loggers=test1,test3
-logger.test1.level=WARN
-logger.test3.level=DEBUG
-logger.level=ERROR
\ No newline at end of file