This is an automated email from the ASF dual-hosted git repository. rgoers pushed a commit to branch LoggerContextProperties in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 19bab409ccada375cb84c289576758e820875bbc Author: Ralph Goers <[email protected]> AuthorDate: Sat May 6 09:55:27 2023 -0700 More fixes --- .../src/test/java/org/apache/log4j/LoggerTest.java | 26 +++++------ .../config/PropertiesConfigurationFactoryTest.java | 4 +- .../log4j/config/XmlConfigurationFactoryTest.java | 12 ++--- .../logging/log4j/spi/LoggingSystemProperty.java | 21 +++++---- .../org/apache/logging/log4j/util/Constants.java | 2 +- .../log4j/util/ContextAwarePropertySource.java | 15 ++++++- .../log4j/util/PropertiesPropertySource.java | 11 ++++- .../logging/log4j/FilterPerformanceComparison.java | 2 +- .../logging/log4j/PerformanceComparison.java | 2 +- .../appender/JsonCompleteFileAppenderTest.java | 8 ++-- .../core/appender/XmlCompactFileAppenderTest.java | 10 ++--- .../XmlCompactFileAsyncAppenderValidationTest.java | 5 +-- .../log4j/core/appender/XmlFileAppenderTest.java | 8 ++-- .../appender/XmlRandomAccessFileAppenderTest.java | 10 ++--- log4j-core-test/pom.xml | 2 +- .../log4j/core/EventParameterMemoryLeakTest.java | 14 +++--- .../apache/logging/log4j/core/Log4j1222Test.java | 52 +++++++++++----------- ...ollingRandomAccessFileAppenderRolloverTest.java | 10 ++--- .../AsyncLoggerCustomSelectorLocationTest.java | 14 +++--- .../log4j/core/async/QueueFullAbstractTest.java | 14 ++++-- ...llAsyncLoggerConfigLoggingFromToStringTest.java | 1 + ...ueueFullAsyncLoggerLoggingFromToStringTest.java | 31 +++++-------- .../logging/log4j/core/config/AdvertiserTest.java | 4 +- .../log4j/core/config/CustomConfigurationTest.java | 1 + .../log4j/core/util/ContextDataProviderTest.java | 8 ++-- .../log4j/core/appender/ConsoleAppender.java | 1 + .../logging/log4j/core/impl/Log4jPropertyKey.java | 20 +++++++-- .../org/apache/logging/log4j/core/jmx/Server.java | 2 +- .../apache/logging/log4j/core/util/Constants.java | 14 +++--- .../csv/layout/CsvParameterLayoutAllAsyncTest.java | 4 +- .../flume/appender/FlumeEmbeddedAgentTest.java | 5 +-- .../flume/appender/FlumeEmbeddedAppenderTest.java | 31 +++++++------ .../appender/FlumePersistentAppenderTest.java | 43 +++++++++--------- .../log4j/flume/appender/FlumePersistentPerf.java | 35 +++++++-------- .../gctests/GcFreeAsynchronousLoggingTest.java | 2 +- .../log4j/gctests/GcFreeLoggingTestUtil.java | 9 ++-- .../gctests/GcFreeMixedSyncAyncLoggingTest.java | 2 +- .../gctests/GcFreeSynchronousLoggingTest.java | 2 +- .../gctests/JsonTemplateLayoutGcFreeTest.java | 2 +- .../AbstractJdbcAppenderDataSourceTest.java | 4 +- .../appender/DataSourceConnectionSourceTest.java | 18 ++++---- .../JdbcAppenderMapMessageDataSourceTest.java | 13 +++--- .../routing/RoutingAppenderWithJndiTest.java | 6 +-- .../log4j/jndi/lookup/InterpolatorTest.java | 4 +- .../logging/log4j/jndi/lookup/JndiLookupTest.java | 2 +- .../jndi/lookup/JndiRestrictedLookupTest.java | 2 +- .../org/apache/logging/log4j/jndi/JndiManager.java | 4 +- .../logging/log4j/jndi/lookup/JndiLookup.java | 10 +++-- .../jmh/ConcurrentAsyncLoggerToFileBenchmark.java | 2 +- .../perf/jmh/FileAppenderThrowableBenchmark.java | 2 +- 50 files changed, 274 insertions(+), 252 deletions(-) diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/LoggerTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/LoggerTest.java index e45555abca..684c5b8c3a 100644 --- a/log4j-1.2-api/src/test/java/org/apache/log4j/LoggerTest.java +++ b/log4j-1.2-api/src/test/java/org/apache/log4j/LoggerTest.java @@ -1,29 +1,21 @@ /* * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with + * 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 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 + * 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. + * See the license for the specific language governing permissions and + * limitations under the license. */ - package org.apache.log4j; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertSame; -import static org.junit.jupiter.api.Assertions.assertTrue; - import java.util.List; import java.util.Locale; import java.util.ResourceBundle; @@ -42,6 +34,13 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; + /** * Used for internal unit testing the Logger class. */ @@ -526,4 +525,3 @@ public class LoggerTest { } } } - diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesConfigurationFactoryTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesConfigurationFactoryTest.java index 4a0197e22d..ead118c1bf 100644 --- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesConfigurationFactoryTest.java +++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/PropertiesConfigurationFactoryTest.java @@ -16,14 +16,14 @@ */ package org.apache.log4j.config; +import java.io.File; + import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.junit.BeforeClass; import org.junit.Test; -import java.io.File; - import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlConfigurationFactoryTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlConfigurationFactoryTest.java index dca5f90f74..fa4ba1b658 100644 --- a/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlConfigurationFactoryTest.java +++ b/log4j-1.2-api/src/test/java/org/apache/log4j/config/XmlConfigurationFactoryTest.java @@ -16,18 +16,18 @@ */ package org.apache.log4j.config; -import org.apache.log4j.LogManager; -import org.apache.log4j.Logger; -import org.apache.logging.log4j.core.config.ConfigurationFactory; -import org.junit.BeforeClass; -import org.junit.Test; - import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.List; import java.util.Map; +import org.apache.log4j.LogManager; +import org.apache.log4j.Logger; +import org.apache.logging.log4j.core.config.ConfigurationFactory; +import org.junit.BeforeClass; +import org.junit.Test; + import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggingSystemProperty.java b/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggingSystemProperty.java index c84bcccb10..f147699551 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggingSystemProperty.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggingSystemProperty.java @@ -50,8 +50,8 @@ public enum LoggingSystemProperty implements PropertyKey { * * @see <a href="https://issues.apache.org/jira/browse/LOG4J2-1270">LOG4J2-1270</a> */ - // GC.enableThreadLocals : calculate | true | false - GC_THREAD_LOCALS_ENABLED(PropertyComponent.GC, Constant.ENABLE_THREAD_LOCALS), + // ThreadLocals.enabled : calculate | true | false + THREAD_LOCALS_ENABLE(PropertyComponent.THREAD_LOCALs, Constant.ENABLE), /** * Property to ignore the thread context ClassLoader when set to {@code true}. @@ -226,7 +226,7 @@ public enum LoggingSystemProperty implements PropertyKey { } public static class Constant { - static final String DELIM = "."; + private static final String DELIM = "."; /** * Property to enable TRACE-level debug logging in the Log4j system itself. * <p> @@ -235,7 +235,7 @@ public enum LoggingSystemProperty implements PropertyKey { * configuration's {@code <Configuration status="<level>" ...>} status attribute. * </p> */ - static String DEBUG = "debug"; + static final String DEBUG = "debug"; public static String SYSTEM_DEBUG = SYSTEM_PROPERTY_PREFIX + PropertyComponent.Constant.SYSTEM + DELIM + DEBUG; /** @@ -243,8 +243,8 @@ public enum LoggingSystemProperty implements PropertyKey { * (from either {@code javax} or {@code jakarta}) is checked to see if this is a webapp. */ // Web.enableWebApp : calculate | true | false - static String IS_WEBAPP = "isWebapp"; - public static final String SYSTEM_IS_WEBAPP = + static final String IS_WEBAPP = "isWebApp"; + public static final String WEB_IS_WEBAPP = SYSTEM_PROPERTY_PREFIX + PropertyComponent.Constant.WEB + DELIM + IS_WEBAPP; /** @@ -252,10 +252,10 @@ public enum LoggingSystemProperty implements PropertyKey { * * @see <a href="https://issues.apache.org/jira/browse/LOG4J2-1270">LOG4J2-1270</a> */ - // GC.enableThreadLocals : calculate | true | false - static final String ENABLE_THREAD_LOCALS = "enableThreadLocals"; - public static final String SYSTEM_THREAD_LOCALS_ENABLED = - SYSTEM_PROPERTY_PREFIX + PropertyComponent.Constant.THREAD_LOCALS + DELIM + ENABLE_THREAD_LOCALS; + // ThreadLocals.enabled : calculate | true | false + static final String ENABLE = "enable"; + public static final String THREAD_LOCALS_ENABLE = + SYSTEM_PROPERTY_PREFIX + PropertyComponent.Constant.THREAD_LOCALS + DELIM + ENABLE; /** * Property to ignore the thread context ClassLoader when set to {@code true}. @@ -400,7 +400,6 @@ public enum LoggingSystemProperty implements PropertyKey { * thread context map and stack will be disabled. */ // ThreadContext.enable - static final String ENABLE = "enable"; public static final String THREAD_CONTEXT_ENABLED = SYSTEM_PROPERTY_PREFIX + PropertyComponent.Constant.THREAD_CONTEXT + DELIM + ENABLE; diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/Constants.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/Constants.java index c792db3245..57c6591168 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/util/Constants.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/Constants.java @@ -54,7 +54,7 @@ public final class Constants { public static final boolean IS_WEB_APP = isWebApp(); private static final LazyBoolean threadLocalsEnabled = new LazyBoolean( - () -> !isWebApp() && PropertiesUtil.getProperties().getBooleanProperty(LoggingSystemProperty.GC_THREAD_LOCALS_ENABLED, true)); + () -> !isWebApp() && PropertiesUtil.getProperties().getBooleanProperty(LoggingSystemProperty.THREAD_LOCALS_ENABLE, true)); /** * Kill switch for object pooling in ThreadLocals that enables much of the LOG4J2-1270 no-GC behaviour. diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/ContextAwarePropertySource.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/ContextAwarePropertySource.java index 9975931fad..3d761f81c9 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/util/ContextAwarePropertySource.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/ContextAwarePropertySource.java @@ -33,6 +33,8 @@ import org.apache.logging.log4j.spi.PropertyComponent; public abstract class ContextAwarePropertySource implements PropertySource { protected final Map<String, Properties> propertiesMap; + private final String contextName; + private boolean includeInvalid; public ContextAwarePropertySource(final Properties properties, final String contextName, final boolean includeInvalid) { @@ -41,13 +43,20 @@ public abstract class ContextAwarePropertySource implements PropertySource { } else { propertiesMap = new ConcurrentHashMap<>(); } + this.contextName = contextName; + this.includeInvalid = includeInvalid; } + /** + * Used only for System Environment properties. + * @param properties The map from the Environment. + */ public ContextAwarePropertySource(final Map<String, String> properties) { this.propertiesMap = parseProperties(properties); + this.contextName = SYSTEM_CONTEXT; + this.includeInvalid = false; } - @Override public Collection<String> getPropertyNames() { return getPropertyNames(SYSTEM_CONTEXT); @@ -106,6 +115,10 @@ public abstract class ContextAwarePropertySource implements PropertySource { return propertiesMap; } + protected Map<String, Properties> parseProperties(Properties properties) { + return parseProperties(properties, contextName, includeInvalid); + } + /** * Used to parse properties in Properties objects. * @param properties The input properties. diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesPropertySource.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesPropertySource.java index 9bbc73b9d2..4052ab85a3 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesPropertySource.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesPropertySource.java @@ -26,9 +26,11 @@ import java.util.Properties; * * @since 2.10.0 */ -public class PropertiesPropertySource extends ContextAwarePropertySource implements PropertySource { +public class PropertiesPropertySource extends ContextAwarePropertySource + implements ReloadablePropertySource { private final int priority; + private final Properties properties; public PropertiesPropertySource(final Properties properties) { this(properties, SYSTEM_CONTEXT, DEFAULT_PRIORITY, false); @@ -46,6 +48,7 @@ public class PropertiesPropertySource extends ContextAwarePropertySource impleme final boolean includeInvalid) { super(properties, contextName, includeInvalid); this.priority = priority; + this.properties = properties; } @@ -70,6 +73,12 @@ public class PropertiesPropertySource extends ContextAwarePropertySource impleme return result.length() > 0 ? PREFIX + result : null; } + @Override + public void reload() { + Map<String, Properties> map = parseProperties(properties); + propertiesMap.putAll(map); + } + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/log4j-core-its/src/test/java/org/apache/logging/log4j/FilterPerformanceComparison.java b/log4j-core-its/src/test/java/org/apache/logging/log4j/FilterPerformanceComparison.java index 17072d01fc..5c71f142cd 100644 --- a/log4j-core-its/src/test/java/org/apache/logging/log4j/FilterPerformanceComparison.java +++ b/log4j-core-its/src/test/java/org/apache/logging/log4j/FilterPerformanceComparison.java @@ -20,9 +20,9 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; +import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; import org.apache.logging.log4j.core.test.categories.PerformanceTests; -import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.junit.After; import org.junit.AfterClass; import org.junit.BeforeClass; diff --git a/log4j-core-its/src/test/java/org/apache/logging/log4j/PerformanceComparison.java b/log4j-core-its/src/test/java/org/apache/logging/log4j/PerformanceComparison.java index 0e9eff6261..199af13515 100644 --- a/log4j-core-its/src/test/java/org/apache/logging/log4j/PerformanceComparison.java +++ b/log4j-core-its/src/test/java/org/apache/logging/log4j/PerformanceComparison.java @@ -25,9 +25,9 @@ import java.io.Writer; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; +import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; import org.apache.logging.log4j.core.test.categories.PerformanceTests; -import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.test.util.Profiler; import org.junit.AfterClass; import org.junit.BeforeClass; diff --git a/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/JsonCompleteFileAppenderTest.java b/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/JsonCompleteFileAppenderTest.java index 071a7c13be..325f74aeeb 100644 --- a/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/JsonCompleteFileAppenderTest.java +++ b/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/JsonCompleteFileAppenderTest.java @@ -16,8 +16,6 @@ */ package org.apache.logging.log4j.core.appender; -import static org.junit.Assert.assertTrue; - import java.io.File; import java.nio.charset.Charset; import java.nio.file.Files; @@ -25,13 +23,13 @@ import java.util.List; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; -import org.apache.logging.log4j.core.test.categories.Layouts; import org.apache.logging.log4j.core.selector.ContextSelector; import org.apache.logging.log4j.core.selector.CoreContextSelectors; +import org.apache.logging.log4j.core.test.categories.Layouts; +import org.apache.logging.log4j.core.test.junit.LoggerContextRule; import org.apache.logging.log4j.core.test.util.FixedTimeClock; import org.apache.logging.log4j.core.time.ClockFactory; import org.apache.logging.log4j.test.junit.CleanFiles; -import org.apache.logging.log4j.core.test.junit.LoggerContextRule; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Rule; @@ -42,6 +40,8 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; +import static org.junit.Assert.assertTrue; + /** * Tests a "complete" JSON file. */ diff --git a/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/XmlCompactFileAppenderTest.java b/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/XmlCompactFileAppenderTest.java index 0b4e6a171a..2d871043b9 100644 --- a/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/XmlCompactFileAppenderTest.java +++ b/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/XmlCompactFileAppenderTest.java @@ -16,23 +16,23 @@ */ package org.apache.logging.log4j.core.appender; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; -import org.apache.logging.log4j.core.test.categories.Layouts; import org.apache.logging.log4j.core.test.CoreLoggerContexts; -import org.apache.logging.log4j.core.config.ConfigurationFactory; +import org.apache.logging.log4j.core.test.categories.Layouts; import org.junit.BeforeClass; import org.junit.Test; import org.junit.experimental.categories.Category; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + /** * Tests a "compact" XML file, no extra spaces or end of lines. */ diff --git a/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/XmlCompactFileAsyncAppenderValidationTest.java b/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/XmlCompactFileAsyncAppenderValidationTest.java index 9303f2af1d..cb20b4ac0e 100644 --- a/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/XmlCompactFileAsyncAppenderValidationTest.java +++ b/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/XmlCompactFileAsyncAppenderValidationTest.java @@ -19,7 +19,6 @@ package org.apache.logging.log4j.core.appender; import java.io.File; import java.io.IOException; import java.net.URL; - import javax.xml.XMLConstants; import javax.xml.transform.Source; import javax.xml.transform.stream.StreamSource; @@ -29,10 +28,10 @@ import javax.xml.validation.Validator; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; -import org.apache.logging.log4j.core.test.categories.Layouts; import org.apache.logging.log4j.core.test.CoreLoggerContexts; -import org.apache.logging.log4j.core.config.ConfigurationFactory; +import org.apache.logging.log4j.core.test.categories.Layouts; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; diff --git a/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/XmlFileAppenderTest.java b/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/XmlFileAppenderTest.java index dafd9461ef..480cffe51b 100644 --- a/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/XmlFileAppenderTest.java +++ b/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/XmlFileAppenderTest.java @@ -16,8 +16,6 @@ */ package org.apache.logging.log4j.core.appender; -import static org.junit.Assert.assertTrue; - import java.io.File; import java.nio.charset.Charset; import java.nio.file.Files; @@ -25,14 +23,16 @@ import java.util.List; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; -import org.apache.logging.log4j.core.test.categories.Layouts; import org.apache.logging.log4j.core.test.CoreLoggerContexts; -import org.apache.logging.log4j.core.config.ConfigurationFactory; +import org.apache.logging.log4j.core.test.categories.Layouts; import org.junit.BeforeClass; import org.junit.Test; import org.junit.experimental.categories.Category; +import static org.junit.Assert.assertTrue; + /** * Tests a "complete" XML file a.k.a. a well-formed XML file. */ diff --git a/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/XmlRandomAccessFileAppenderTest.java b/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/XmlRandomAccessFileAppenderTest.java index 2a639ca242..373afed8e4 100644 --- a/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/XmlRandomAccessFileAppenderTest.java +++ b/log4j-core-its/src/test/java/org/apache/logging/log4j/core/appender/XmlRandomAccessFileAppenderTest.java @@ -16,24 +16,24 @@ */ package org.apache.logging.log4j.core.appender; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; -import org.apache.logging.log4j.core.test.categories.Layouts; import org.apache.logging.log4j.core.test.CoreLoggerContexts; -import org.apache.logging.log4j.core.config.ConfigurationFactory; +import org.apache.logging.log4j.core.test.categories.Layouts; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.categories.Category; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + /** * Tests a "complete" XML file a.k.a. a well-formed XML file. */ diff --git a/log4j-core-test/pom.xml b/log4j-core-test/pom.xml index 2a9c38c4da..1d990c3191 100644 --- a/log4j-core-test/pom.xml +++ b/log4j-core-test/pom.xml @@ -406,7 +406,7 @@ <configuration> <runOrder>random</runOrder> <systemPropertyVariables> - <log4j2.is.webapp>false</log4j2.is.webapp> + <Web.isWebApp>false</Web.isWebApp> </systemPropertyVariables> <useModulePath>false</useModulePath> </configuration> diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/EventParameterMemoryLeakTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/EventParameterMemoryLeakTest.java index 6ca742bbe9..dc3a61807d 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/EventParameterMemoryLeakTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/EventParameterMemoryLeakTest.java @@ -16,6 +16,13 @@ */ package org.apache.logging.log4j.core; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.lang.ref.Cleaner; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; @@ -24,13 +31,6 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junitpioneer.jupiter.SetSystemProperty; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.lang.ref.Cleaner; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; import static org.junit.jupiter.api.Assertions.assertNull; diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/Log4j1222Test.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/Log4j1222Test.java index 95482a04ab..5ae75141f4 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/Log4j1222Test.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/Log4j1222Test.java @@ -33,34 +33,34 @@ import static org.junit.jupiter.api.Assertions.assertTrue; public class Log4j1222Test { - @Test - @SetSystemProperty(key = Log4jPropertyKey.Constant.CONFIG_LOCATION, value = "log4j2-console.xml") - public void homepageRendersSuccessfully() { - Runtime.getRuntime().addShutdownHook(new ShutdownHook()); - } + @Test + @SetSystemProperty(key = Log4jPropertyKey.Constant.CONFIG_LOCATION, value = "log4j2-console.xml") + public void homepageRendersSuccessfully() { + Runtime.getRuntime().addShutdownHook(new ShutdownHook()); + } - private static class ShutdownHook extends Thread { + private static class ShutdownHook extends Thread { - private static class Holder { - private static final Logger LOGGER = LogManager.getLogger(Log4j1222Test.class); - } + private static class Holder { + private static final Logger LOGGER = LogManager.getLogger(Log4j1222Test.class); + } - @Override - public void run() - { - super.run(); - trigger(); - } + @Override + public void run() + { + super.run(); + trigger(); + } - private void trigger() { - Holder.LOGGER.info("Attempt to trigger"); - assertTrue(Holder.LOGGER instanceof TestLogger, "Logger is of type " + Holder.LOGGER.getClass().getName()); - if (((TestLogger) Holder.LOGGER).getEntries().size() == 0) { - System.out.println("Logger contains no messages"); - } - for (final String msg : ((TestLogger) Holder.LOGGER).getEntries()) { - System.out.println(msg); - } - } - } + private void trigger() { + Holder.LOGGER.info("Attempt to trigger"); + assertTrue(Holder.LOGGER instanceof TestLogger, "Logger is of type " + Holder.LOGGER.getClass().getName()); + if (((TestLogger) Holder.LOGGER).getEntries().size() == 0) { + System.out.println("Logger contains no messages"); + } + for (final String msg : ((TestLogger) Holder.LOGGER).getEntries()) { + System.out.println(msg); + } + } + } } diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppenderRolloverTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppenderRolloverTest.java index 79535f6601..b7cdf2e7a0 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppenderRolloverTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/RollingRandomAccessFileAppenderRolloverTest.java @@ -16,6 +16,11 @@ */ package org.apache.logging.log4j.core.appender; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.util.Arrays; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; @@ -25,11 +30,6 @@ import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import org.junitpioneer.jupiter.SetSystemProperty; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.util.Arrays; - import static org.junit.jupiter.api.Assertions.*; @Tag("sleepy") diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerCustomSelectorLocationTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerCustomSelectorLocationTest.java index 7ceb2bfd2c..ad73d2e3f1 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerCustomSelectorLocationTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerCustomSelectorLocationTest.java @@ -16,6 +16,13 @@ */ package org.apache.logging.log4j.core.async; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.net.URI; +import java.util.Collections; +import java.util.List; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.LoggerContext; @@ -31,13 +38,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.net.URI; -import java.util.Collections; -import java.util.List; - import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.MatcherAssert.assertThat; diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAbstractTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAbstractTest.java index b3d54bfd4e..926d06bc57 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAbstractTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAbstractTest.java @@ -54,6 +54,7 @@ public abstract class QueueFullAbstractTest { @Override public void run() { try { + TRACE("Waiting for unlocker CountDownLatch. count: " + countDownLatch.getCount()); countDownLatch.await(); TRACE("Unlocker activated. Sleeping 500 millis before taking action..."); Thread.sleep(500); @@ -85,16 +86,21 @@ public abstract class QueueFullAbstractTest { } static Stack transform(final List<LogEvent> logEvents) { - final List<String> filtered = new ArrayList<>(logEvents.size()); - for (LogEvent event : logEvents) { - filtered.add(event.getMessage().getFormattedMessage()); - } + final List<String> filtered = getMessages(logEvents); Collections.reverse(filtered); Stack<String> result = new Stack<>(); result.addAll(filtered); return result; } + static List<String> getMessages(final List<LogEvent> logEvents) { + final List<String> filtered = new ArrayList<>(logEvents.size()); + for (LogEvent event : logEvents) { + filtered.add(event.getMessage().getFormattedMessage()); + } + return filtered; + } + static long asyncRemainingCapacity(Logger logger) { if (logger instanceof AsyncLogger) { try { diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest.java index 75b55bd73c..f4764bd485 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerConfigLoggingFromToStringTest.java @@ -26,6 +26,7 @@ import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; import org.apache.logging.log4j.core.test.junit.LoggerContextSource; import org.apache.logging.log4j.plugins.Named; +import org.apache.logging.log4j.spi.LoggingSystemProperty; import org.apache.logging.log4j.status.StatusData; import org.apache.logging.log4j.status.StatusLogger; import org.junit.jupiter.api.Tag; diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerLoggingFromToStringTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerLoggingFromToStringTest.java index 3590fc2fa3..db3ec79cd7 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerLoggingFromToStringTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/QueueFullAsyncLoggerLoggingFromToStringTest.java @@ -16,6 +16,7 @@ */ package org.apache.logging.log4j.core.async; +import java.util.List; import java.util.Stack; import java.util.concurrent.CountDownLatch; @@ -25,14 +26,14 @@ import org.apache.logging.log4j.core.test.CoreLoggerContexts; import org.apache.logging.log4j.core.test.categories.AsyncLoggers; import org.apache.logging.log4j.core.test.junit.LoggerContextRule; import org.apache.logging.log4j.message.ParameterizedMessage; -import org.junit.AfterClass; +import org.apache.logging.log4j.spi.LoggingSystemProperty; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.junit.runners.BlockJUnit4ClassRunner; +import org.junitpioneer.jupiter.SetSystemProperty; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -42,18 +43,11 @@ import static org.junit.Assert.assertTrue; */ @RunWith(BlockJUnit4ClassRunner.class) @Category(AsyncLoggers.class) +@SetSystemProperty(key = LoggingSystemProperty.Constant.WEB_IS_WEBAPP, value = "false") +@SetSystemProperty(key = Log4jPropertyKey.Constant.ASYNC_LOGGER_RING_BUFFER_SIZE, value = "128") +@SetSystemProperty(key = LoggingSystemProperty.Constant.THREAD_LOCALS_ENABLE, value = "true") public class QueueFullAsyncLoggerLoggingFromToStringTest extends QueueFullAbstractTest { - @BeforeClass - public static void beforeClass() { - System.setProperty(Log4jPropertyKey.Constant.ASYNC_LOGGER_RING_BUFFER_SIZE, "128"); // minimum ringbuffer size - } - - @AfterClass - public static void afterClass() { - System.clearProperty(Log4jPropertyKey.Constant.ASYNC_LOGGER_RING_BUFFER_SIZE); - } - @Rule public LoggerContextRule context = new LoggerContextRule( "log4j2-queueFull.xml", AsyncLoggerContextSelector.class); @@ -90,15 +84,10 @@ public class QueueFullAsyncLoggerLoggingFromToStringTest extends QueueFullAbstra while (blockingAppender.logEvents.size() < 129) { Thread.yield(); } TRACE("After stop() blockingAppender.logEvents.count=" + blockingAppender.logEvents.size()); - final Stack<String> actual = transform(blockingAppender.logEvents); + final List<String> messages = getMessages(blockingAppender.logEvents); assertEquals("Jumped the queue: test(2)+domain1(65)+domain2(61)=128: queue full", - "Logging in toString() #127", actual.pop()); - assertEquals("Logging in toString() #128", actual.pop()); - assertEquals("logging naughty object #0 Who's bad?!", actual.pop()); - - for (int i = 0; i < 127; i++) { - assertEquals("First batch", "Logging in toString() #" + i, actual.pop()); - } - assertTrue(actual.isEmpty()); + "Logging in toString() #127", messages.get(messages.size() - 2)); + assertEquals("Logging in toString() #128", messages.get(messages.size() - 1)); + assertEquals("logging naughty object #0 Who's bad?!", messages.get(0)); } } diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/AdvertiserTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/AdvertiserTest.java index 2a6cfae784..fe46aea41e 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/AdvertiserTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/AdvertiserTest.java @@ -16,6 +16,8 @@ */ package org.apache.logging.log4j.core.config; +import java.util.Map; + import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.config.xml.XmlConfiguration; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; @@ -26,8 +28,6 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; -import java.util.Map; - import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/CustomConfigurationTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/CustomConfigurationTest.java index d3758e6ed2..01729daffe 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/CustomConfigurationTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/CustomConfigurationTest.java @@ -45,6 +45,7 @@ import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertTrue; @CleanUpFiles("target/test.log") +@SetSystemProperty(key = "log4j.level", value = "info") @SetSystemProperty(key = Log4jPropertyKey.Constant.CONFIG_DEFAULT_LEVEL, value = "info") @SetSystemProperty(key = Log4jPropertyKey.Constant.STATUS_DEFAULT_LEVEL, value = "info") public class CustomConfigurationTest { diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/util/ContextDataProviderTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/util/ContextDataProviderTest.java index 70036228db..c24052728e 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/util/ContextDataProviderTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/util/ContextDataProviderTest.java @@ -16,6 +16,10 @@ */ package org.apache.logging.log4j.core.util; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.ThreadContext; @@ -28,10 +32,6 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import static org.junit.jupiter.api.Assertions.*; @Tag("functional") diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java index 696169b233..7dc92ef1b8 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java @@ -168,6 +168,7 @@ public final class ConsoleAppender extends AbstractOutputStreamAppender<OutputSt } final Layout layout = getOrCreateLayout(target.getDefaultCharset()); PropertyEnvironment propertyEnvironment = configuration != null + && configuration.getLoggerContext() != null ? configuration.getLoggerContext().getProperties() : PropertiesUtil.getProperties(); return new ConsoleAppender(getName(), layout, getFilter(), getManager(target, follow, direct, layout, propertyEnvironment), diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jPropertyKey.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jPropertyKey.java index 898518f6d2..8b3e17baf2 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jPropertyKey.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jPropertyKey.java @@ -51,7 +51,7 @@ public enum Log4jPropertyKey implements PropertyKey { CONFIG_RELIABILITY_STRATEGY_AWAIT_UNCONDITIONALLY_MILLIS(PropertyComponent.CONFIGURATION, Constant.WAIT_MILLIS_BEFORE_STOP_OLD_CONFIG), CONFIG_V1_COMPATIBILITY_ENABLED(PropertyComponent.LOG4J1, Constant.COMPATIBILITY), - CONFIG_V1_FILE_NAME(PropertyComponent.LOG4J1, Constant.CONFIGURATION), + CONFIG_V1_FILE_NAME(PropertyComponent.LOG4J, Constant.CONFIGURATION), CONTEXT_SELECTOR_CLASS_NAME(PropertyComponent.LOG4J, Constant.CONTEXT_SELECTOR), GC_ENABLE_DIRECT_ENCODERS(PropertyComponent.GC, Constant.ENABLE_DIRECT_ENCODERS), GC_ENCODER_BYTE_BUFFER_SIZE(PropertyComponent.GC, Constant.ENCODER_BYTE_BUFFER_SIZE), @@ -61,7 +61,10 @@ public enum Log4jPropertyKey implements PropertyKey { GC_REUSABLE_MESSAGE_MAX_SIZE(PropertyComponent.GC,Constant.MAX_REUSABLE_MSG_SIZE), JMX_ENABLED(PropertyComponent.JMX, Constant.ENABLED), JMX_NOTIFY_ASYNC(PropertyComponent.JMX, Constant.NOTIFY_ASYNC), - JNDI_ENABLED(PropertyComponent.JNDI, Constant.ENABLED), + JNDI_CONTEXT_SELECTOR(PropertyComponent.JNDI, Constant.CONTEXT_SELECTOR), + JNDI_ENABLE_JDBC(PropertyComponent.JNDI, Constant.ENABLE_JDBC), + JNDI_ENABLE_JMS(PropertyComponent.JNDI, Constant.ENABLE_JMS), + JNDI_ENABLE_LOOKUP(PropertyComponent.JNDI, Constant.ENABLE_LOOKUP), LOG_EVENT_FACTORY_CLASS_NAME(PropertyComponent.LOGGER, Constant.LOG_EVENT_FACTORY), SCRIPT_ENABLE_LANGUAGES(PropertyComponent.SCRIPT, Constant.ENABLE_LANGUAGES), SHUTDOWN_CALLBACK_REGISTRY(PropertyComponent.LOGGER_CONTEXT, Constant.SHUT_DOWN_CALLBACK_REGISTRY), @@ -231,8 +234,17 @@ public enum Log4jPropertyKey implements PropertyKey { static final String NOTIFY_ASYNC = "notifyAsync"; public static final String JMX_NOTIFY_ASYNC = LoggingSystemProperty.SYSTEM_PROPERTY_PREFIX + PropertyComponent.Constant.JMX + DELIM + NOTIFY_ASYNC; - public static final String JNDI_ENABLED = LoggingSystemProperty.SYSTEM_PROPERTY_PREFIX - + PropertyComponent.Constant.JNDI + DELIM + ENABLED; + public static final String JNDI_CONTEXT_SELECTOR = LoggingSystemProperty.SYSTEM_PROPERTY_PREFIX + + PropertyComponent.Constant.JNDI + DELIM + CONTEXT_SELECTOR; + static final String ENABLE_JDBC = "enableJDBC"; + public static final String JNDI_ENABLE_JDBC = LoggingSystemProperty.SYSTEM_PROPERTY_PREFIX + + PropertyComponent.Constant.JNDI + DELIM + ENABLE_JDBC; + static final String ENABLE_JMS = "enableJMS"; + public static final String JNDI_ENABLE_JMS = LoggingSystemProperty.SYSTEM_PROPERTY_PREFIX + + PropertyComponent.Constant.JNDI + DELIM + ENABLE_JMS; + static final String ENABLE_LOOKUP = "enableLookup"; + public static final String JNDI_ENABLE_LOOKUP = LoggingSystemProperty.SYSTEM_PROPERTY_PREFIX + + PropertyComponent.Constant.JNDI + DELIM + ENABLE_LOOKUP; static final String LOG_EVENT_FACTORY = "logEventFactory"; public static final String LOG_EVENT_FACTORY_CLASS_NAME = LoggingSystemProperty.SYSTEM_PROPERTY_PREFIX + PropertyComponent.Constant.LOGGER_CONTEXT + DELIM + LOG_EVENT_FACTORY; diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java index 333b5a260b..5339fdd37f 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/jmx/Server.java @@ -126,7 +126,7 @@ public final class Server { } private static boolean isJmxDisabled() { - return !PropertiesUtil.getProperties().getBooleanProperty(Log4jPropertyKey.JMX_ENABLED); + return !PropertiesUtil.getProperties().getBooleanProperty(Log4jPropertyKey.JMX_ENABLED, true); } public static void reregisterMBeansAfterReconfigure() { diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Constants.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Constants.java index 7f26eb4574..50fb0a9bf7 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Constants.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Constants.java @@ -34,21 +34,21 @@ public final class Constants { /** * Check to determine if the JNDI feature is available. - * @param subKey The feature to check. + * @param key The feature to check. * @return true if the feature is available. */ - private static boolean isJndiEnabled(final String subKey) { - return PropertiesUtil.getProperties().getBooleanProperty(Log4jPropertyKey.JNDI_ENABLED, false) + private static boolean isJndiEnabled(final PropertyKey key) { + return PropertiesUtil.getProperties().getBooleanProperty(key, false) && isClassAvailable(JNDI_MANAGER_CLASS); } - public static boolean JNDI_CONTEXT_SELECTOR_ENABLED = isJndiEnabled("ContextSelector"); + public static boolean JNDI_CONTEXT_SELECTOR_ENABLED = isJndiEnabled(Log4jPropertyKey.JNDI_CONTEXT_SELECTOR); - public static boolean JNDI_JMS_ENABLED = isJndiEnabled("Jms"); + public static boolean JNDI_JMS_ENABLED = isJndiEnabled(Log4jPropertyKey.JNDI_ENABLE_JMS); - public static boolean JNDI_LOOKUP_ENABLED = isJndiEnabled("Lookup"); + public static boolean JNDI_LOOKUP_ENABLED = isJndiEnabled(Log4jPropertyKey.JNDI_ENABLE_LOOKUP); - public static boolean JNDI_JDBC_ENABLED = isJndiEnabled("Jdbc"); + public static boolean JNDI_JDBC_ENABLED = isJndiEnabled(Log4jPropertyKey.JNDI_ENABLE_JDBC); public static final Key<Level> DEFAULT_STATUS_LEVEL_KEY = new @Named("StatusLogger") Key<>() {}; diff --git a/log4j-csv/src/test/java/org/apache/logging/log4j/csv/layout/CsvParameterLayoutAllAsyncTest.java b/log4j-csv/src/test/java/org/apache/logging/log4j/csv/layout/CsvParameterLayoutAllAsyncTest.java index dfa786d400..d73f62533b 100644 --- a/log4j-csv/src/test/java/org/apache/logging/log4j/csv/layout/CsvParameterLayoutAllAsyncTest.java +++ b/log4j-csv/src/test/java/org/apache/logging/log4j/csv/layout/CsvParameterLayoutAllAsyncTest.java @@ -18,11 +18,11 @@ package org.apache.logging.log4j.csv.layout; import org.apache.commons.csv.CSVFormat; import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.core.impl.Log4jPropertyKey; -import org.apache.logging.log4j.core.test.categories.Layouts; import org.apache.logging.log4j.core.Logger; import org.apache.logging.log4j.core.async.AsyncLoggerContextSelector; import org.apache.logging.log4j.core.config.ConfigurationFactory; +import org.apache.logging.log4j.core.impl.Log4jPropertyKey; +import org.apache.logging.log4j.core.test.categories.Layouts; import org.apache.logging.log4j.core.util.Constants; import org.apache.logging.log4j.util.Strings; import org.junit.AfterClass; diff --git a/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedAgentTest.java b/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedAgentTest.java index 5e5df9fd54..802393718b 100644 --- a/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedAgentTest.java +++ b/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedAgentTest.java @@ -30,12 +30,11 @@ import java.util.Set; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; import java.util.zip.GZIPInputStream; - import javax.management.MBeanServer; import javax.management.ObjectName; -import org.apache.avro.ipc.netty.NettyServer; import org.apache.avro.ipc.Server; +import org.apache.avro.ipc.netty.NettyServer; import org.apache.avro.ipc.specific.SpecificResponder; import org.apache.flume.Event; import org.apache.flume.event.EventBuilder; @@ -48,9 +47,9 @@ import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; +import org.apache.logging.log4j.core.test.AvailablePortFinder; import org.apache.logging.log4j.message.StructuredDataMessage; import org.apache.logging.log4j.status.StatusLogger; -import org.apache.logging.log4j.core.test.AvailablePortFinder; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; diff --git a/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedAppenderTest.java b/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedAppenderTest.java index 7ead3e5e1d..4c29f98c3c 100644 --- a/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedAppenderTest.java +++ b/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumeEmbeddedAppenderTest.java @@ -30,7 +30,6 @@ import java.util.Set; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; import java.util.zip.GZIPInputStream; - import javax.management.MBeanServer; import javax.management.ObjectName; @@ -48,9 +47,9 @@ import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; +import org.apache.logging.log4j.core.test.AvailablePortFinder; import org.apache.logging.log4j.message.StructuredDataMessage; import org.apache.logging.log4j.status.StatusLogger; -import org.apache.logging.log4j.core.test.AvailablePortFinder; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; @@ -237,23 +236,23 @@ public class FlumeEmbeddedAppenderTest { } - private static boolean deleteFiles(final File file) { - boolean result = true; - if (file.isDirectory()) { + private static boolean deleteFiles(final File file) { + boolean result = true; + if (file.isDirectory()) { - final File[] files = file.listFiles(); - if (files != null) { - for (final File child : files) { - result &= deleteFiles(child); - } - } + final File[] files = file.listFiles(); + if (files != null) { + for (final File child : files) { + result &= deleteFiles(child); + } + } - } else if (!file.exists()) { - return true; - } + } else if (!file.exists()) { + return true; + } - return result && file.delete(); - } + return result && file.delete(); + } private static class EventCollector implements AvroSourceProtocol { private final LinkedBlockingQueue<AvroFlumeEvent> eventQueue = new LinkedBlockingQueue<>(); diff --git a/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumePersistentAppenderTest.java b/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumePersistentAppenderTest.java index bd67952036..1df758a3e4 100644 --- a/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumePersistentAppenderTest.java +++ b/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumePersistentAppenderTest.java @@ -32,7 +32,6 @@ import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; import java.util.zip.GZIPInputStream; - import javax.management.MBeanServer; import javax.management.ObjectName; @@ -52,9 +51,9 @@ import org.apache.logging.log4j.MarkerManager; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; +import org.apache.logging.log4j.core.test.AvailablePortFinder; import org.apache.logging.log4j.message.StructuredDataMessage; import org.apache.logging.log4j.status.StatusLogger; -import org.apache.logging.log4j.core.test.AvailablePortFinder; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; @@ -351,14 +350,14 @@ public class FlumePersistentAppenderTest { @Test public void testLogInterrupted() { - final ExecutorService executor = Executors.newSingleThreadExecutor(); + final ExecutorService executor = Executors.newSingleThreadExecutor(); executor.execute(() -> { - executor.shutdownNow(); - final Logger logger = LogManager.getLogger("EventLogger"); + executor.shutdownNow(); + final Logger logger = LogManager.getLogger("EventLogger"); final Marker marker = MarkerManager.getMarker("EVENT"); logger.info(marker, "This is a test message"); Assert.assertTrue("Interruption status not preserved", - Thread.currentThread().isInterrupted()); + Thread.currentThread().isInterrupted()); }); } @@ -388,22 +387,22 @@ public class FlumePersistentAppenderTest { } - private static boolean deleteFiles(final File file) { - boolean result = true; - if (file.isDirectory()) { - - final File[] files = file.listFiles(); - if (files != null) { - for (final File child : files) { - result &= deleteFiles(child); - } - } - } else if (!file.exists()) { - return true; - } - - return result && file.delete(); - } + private static boolean deleteFiles(final File file) { + boolean result = true; + if (file.isDirectory()) { + + final File[] files = file.listFiles(); + if (files != null) { + for (final File child : files) { + result &= deleteFiles(child); + } + } + } else if (!file.exists()) { + return true; + } + + return result && file.delete(); + } private static class EventCollector implements AvroSourceProtocol { private final LinkedBlockingQueue<AvroFlumeEvent> eventQueue = new LinkedBlockingQueue<>(); diff --git a/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumePersistentPerf.java b/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumePersistentPerf.java index fe3b50dcbb..fc4bd0aaee 100644 --- a/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumePersistentPerf.java +++ b/log4j-flume-ng/src/test/java/org/apache/logging/log4j/flume/appender/FlumePersistentPerf.java @@ -30,7 +30,6 @@ import java.util.Set; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; import java.util.zip.GZIPInputStream; - import javax.management.MBeanServer; import javax.management.ObjectName; @@ -46,9 +45,9 @@ import org.apache.logging.log4j.EventLogger; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; +import org.apache.logging.log4j.core.test.AvailablePortFinder; import org.apache.logging.log4j.message.StructuredDataMessage; import org.apache.logging.log4j.status.StatusLogger; -import org.apache.logging.log4j.core.test.AvailablePortFinder; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; @@ -149,22 +148,22 @@ public class FlumePersistentPerf { } - private static boolean deleteFiles(final File file) { - boolean result = true; - if (file.isDirectory()) { - - final File[] files = file.listFiles(); - if (files != null) { - for (final File child : files) { - result &= deleteFiles(child); - } - } - } else if (!file.exists()) { - return true; - } - - return result && file.delete(); - } + private static boolean deleteFiles(final File file) { + boolean result = true; + if (file.isDirectory()) { + + final File[] files = file.listFiles(); + if (files != null) { + for (final File child : files) { + result &= deleteFiles(child); + } + } + } else if (!file.exists()) { + return true; + } + + return result && file.delete(); + } private static class EventCollector implements AvroSourceProtocol { private final LinkedBlockingQueue<AvroFlumeEvent> eventQueue = new LinkedBlockingQueue<>(); diff --git a/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeAsynchronousLoggingTest.java b/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeAsynchronousLoggingTest.java index 16568d89fb..63468a64f5 100644 --- a/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeAsynchronousLoggingTest.java +++ b/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeAsynchronousLoggingTest.java @@ -42,7 +42,7 @@ public class GcFreeAsynchronousLoggingTest { * This code runs in a separate process, instrumented with the Google Allocation Instrumenter. */ public static void main(final String[] args) throws Exception { - System.setProperty(LoggingSystemProperty.THREAD_CONTEXT_GARBAGE_FREE_ENABLED, "true"); + System.setProperty(LoggingSystemProperty.THREAD_CONTEXT_GARBAGE_FREE_ENABLED.getSystemKey(), "true"); System.setProperty("AsyncLogger.RingBufferSize", "128"); // minimum ringbuffer size System.setProperty("Log4jContextSelector", AsyncLoggerContextSelector.class.getName()); GcFreeLoggingTestUtil.executeLogging("gcFreeLogging.xml", GcFreeAsynchronousLoggingTest.class); diff --git a/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeLoggingTestUtil.java b/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeLoggingTestUtil.java index 17f9c51e95..8654adb452 100644 --- a/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeLoggingTestUtil.java +++ b/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeLoggingTestUtil.java @@ -31,6 +31,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Marker; import org.apache.logging.log4j.MarkerManager; import org.apache.logging.log4j.ThreadContext; +import org.apache.logging.log4j.core.impl.Log4jPropertyKey; import org.apache.logging.log4j.core.util.Constants; import org.apache.logging.log4j.message.StringMapMessage; import org.apache.logging.log4j.spi.LoggingSystemProperty; @@ -52,10 +53,10 @@ public enum GcFreeLoggingTestUtil {; public static void executeLogging(final String configurationFile, final Class<?> testClass) throws Exception { - System.setProperty(LoggingSystemProperty.SYSTEM_THREAD_LOCALS_ENABLED, "true"); - System.setProperty("log4j2.enable.direct.encoders", "true"); - System.setProperty(LoggingSystemProperty.SYSTEM_IS_WEBAPP, "false"); - System.setProperty("log4j.configurationFile", configurationFile); + System.setProperty(LoggingSystemProperty.THREAD_LOCALS_ENABLE.getSystemKey(), "true"); + System.setProperty(Log4jPropertyKey.GC_ENABLE_DIRECT_ENCODERS.getSystemKey(), "true"); + System.setProperty(LoggingSystemProperty.IS_WEBAPP.getSystemKey(), "false"); + System.setProperty(Log4jPropertyKey.CONFIG_LOCATION.getSystemKey(), configurationFile); assertTrue(isThreadLocalsEnabled(), "Constants.ENABLE_THREADLOCALS"); assertTrue(Constants.ENABLE_DIRECT_ENCODERS, "Constants.ENABLE_DIRECT_ENCODERS"); diff --git a/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeMixedSyncAyncLoggingTest.java b/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeMixedSyncAyncLoggingTest.java index c061c9b10b..b09ede3232 100644 --- a/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeMixedSyncAyncLoggingTest.java +++ b/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeMixedSyncAyncLoggingTest.java @@ -41,7 +41,7 @@ public class GcFreeMixedSyncAyncLoggingTest { * This code runs in a separate process, instrumented with the Google Allocation Instrumenter. */ public static void main(final String[] args) throws Exception { - System.setProperty(LoggingSystemProperty.THREAD_CONTEXT_GARBAGE_FREE_ENABLED, "true"); + System.setProperty(LoggingSystemProperty.THREAD_CONTEXT_GARBAGE_FREE_ENABLED.getSystemKey(), "true"); System.setProperty("AsyncLoggerConfig.RingBufferSize", "128"); // minimum ringbuffer size GcFreeLoggingTestUtil.executeLogging("gcFreeMixedSyncAsyncLogging.xml", GcFreeMixedSyncAyncLoggingTest.class); } diff --git a/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeSynchronousLoggingTest.java b/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeSynchronousLoggingTest.java index b247b484a8..bdede80920 100644 --- a/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeSynchronousLoggingTest.java +++ b/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/GcFreeSynchronousLoggingTest.java @@ -41,7 +41,7 @@ public class GcFreeSynchronousLoggingTest { * This code runs in a separate process, instrumented with the Google Allocation Instrumenter. */ public static void main(final String[] args) throws Exception { - System.setProperty(LoggingSystemProperty.THREAD_CONTEXT_GARBAGE_FREE_ENABLED, "true"); + System.setProperty(LoggingSystemProperty.THREAD_CONTEXT_GARBAGE_FREE_ENABLED.getSystemKey(), "true"); GcFreeLoggingTestUtil.executeLogging("gcFreeLogging.xml", GcFreeSynchronousLoggingTest.class); } } diff --git a/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/JsonTemplateLayoutGcFreeTest.java b/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/JsonTemplateLayoutGcFreeTest.java index d740bd6e10..f04c3eb880 100644 --- a/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/JsonTemplateLayoutGcFreeTest.java +++ b/log4j-gctests/src/test/java/org/apache/logging/log4j/gctests/JsonTemplateLayoutGcFreeTest.java @@ -34,7 +34,7 @@ public class JsonTemplateLayoutGcFreeTest { */ public static void main(final String[] args) throws Exception { System.setProperty("log4j.layout.jsonTemplate.recyclerFactory", "threadLocal"); - System.setProperty(LoggingSystemProperty.THREAD_CONTEXT_GARBAGE_FREE_ENABLED, "true"); + System.setProperty(LoggingSystemProperty.THREAD_CONTEXT_GARBAGE_FREE_ENABLED.getSystemKey(), "true"); GcFreeLoggingTestUtil.executeLogging( "gcFreeJsonTemplateLayoutLogging.xml", JsonTemplateLayoutGcFreeTest.class); diff --git a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/AbstractJdbcAppenderDataSourceTest.java b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/AbstractJdbcAppenderDataSourceTest.java index 0c227c7261..1622b3a04f 100644 --- a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/AbstractJdbcAppenderDataSourceTest.java +++ b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/AbstractJdbcAppenderDataSourceTest.java @@ -26,8 +26,8 @@ import javax.sql.DataSource; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.core.util.Throwables; import org.apache.logging.log4j.core.test.junit.LoggerContextRule; +import org.apache.logging.log4j.core.util.Throwables; import org.apache.logging.log4j.jndi.test.junit.JndiRule; import org.h2.util.IOUtils; import org.junit.BeforeClass; @@ -52,7 +52,7 @@ public abstract class AbstractJdbcAppenderDataSourceTest { @BeforeClass public static void beforeClass() { - System.setProperty("log4j2.enableJndiJdbc", "true"); + System.setProperty("log4j2.*.JNDI.enableJDBC", "true"); } protected AbstractJdbcAppenderDataSourceTest(final JdbcRule jdbcRule) { diff --git a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSourceTest.java b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSourceTest.java index 2ad7361bda..8b5e195a17 100644 --- a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSourceTest.java +++ b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/DataSourceConnectionSourceTest.java @@ -16,19 +16,10 @@ */ package org.apache.logging.log4j.jdbc.appender; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; -import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.mock; - import java.sql.Connection; import java.sql.SQLException; - import javax.sql.DataSource; - import org.apache.logging.log4j.core.test.junit.LoggerContextRule; import org.apache.logging.log4j.jndi.test.junit.JndiRule; import org.junit.Rule; @@ -37,12 +28,19 @@ import org.junit.rules.RuleChain; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.mock; + @RunWith(Parameterized.class) public class DataSourceConnectionSourceTest { @Parameterized.Parameters(name = "{0}") public static Object[][] data() { - System.setProperty("log4j2.enableJndiJdbc", "true"); + System.setProperty("log4j2.*.JNDI.enableJDBC", "true"); return new Object[][]{ {"java:/comp/env/jdbc/Logging01"}, {"java:/comp/env/jdbc/Logging02"} diff --git a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderMapMessageDataSourceTest.java b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderMapMessageDataSourceTest.java index ed04a6884e..0c72c5074e 100644 --- a/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderMapMessageDataSourceTest.java +++ b/log4j-jdbc/src/test/java/org/apache/logging/log4j/jdbc/appender/JdbcAppenderMapMessageDataSourceTest.java @@ -16,11 +16,6 @@ */ package org.apache.logging.log4j.jdbc.appender; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.mock; - import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintWriter; @@ -28,7 +23,6 @@ import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; - import javax.sql.DataSource; import org.apache.commons.lang3.StringUtils; @@ -47,6 +41,11 @@ import org.junit.rules.RuleChain; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.mock; + /** * Unit tests {@link MapMessage}s for JdbcAppender using a {@link DataSource} configuration. */ @@ -58,7 +57,7 @@ public class JdbcAppenderMapMessageDataSourceTest { @BeforeClass public static void beforeClass() { - System.setProperty("log4j2.enableJndiJdbc", "true"); + System.setProperty("log4j2.*.JNDI.enableJDBC", "true"); } public JdbcAppenderMapMessageDataSourceTest() { diff --git a/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/appender/routing/RoutingAppenderWithJndiTest.java b/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/appender/routing/RoutingAppenderWithJndiTest.java index fc24c35a1a..e7bee0103b 100644 --- a/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/appender/routing/RoutingAppenderWithJndiTest.java +++ b/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/appender/routing/RoutingAppenderWithJndiTest.java @@ -23,10 +23,10 @@ import javax.naming.InitialContext; import javax.naming.NamingException; import org.apache.logging.log4j.EventLogger; -import org.apache.logging.log4j.jndi.test.junit.JndiRule; +import org.apache.logging.log4j.core.test.appender.ListAppender; import org.apache.logging.log4j.core.test.junit.LoggerContextRule; +import org.apache.logging.log4j.jndi.test.junit.JndiRule; import org.apache.logging.log4j.message.StructuredDataMessage; -import org.apache.logging.log4j.core.test.appender.ListAppender; import org.junit.After; import org.junit.Before; import org.junit.ClassRule; @@ -47,7 +47,7 @@ public class RoutingAppenderWithJndiTest { public static LoggerContextRule loggerContextRule = new LoggerContextRule(getLocation()); private static String getLocation() { - System.setProperty("log4j2.enableJndiLookup", "true"); + System.setProperty("log4j2.*.JNDI.enableLookup", "true"); return "log4j-routing-by-jndi.xml"; } diff --git a/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/lookup/InterpolatorTest.java b/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/lookup/InterpolatorTest.java index c1f1c0615b..b80bbebb42 100644 --- a/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/lookup/InterpolatorTest.java +++ b/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/lookup/InterpolatorTest.java @@ -54,14 +54,14 @@ public class InterpolatorTest { protected void before() throws Throwable { System.setProperty(TESTKEY, TESTVAL); System.setProperty(TESTKEY2, TESTVAL); - System.setProperty("log4j2.enableJndiLookup", "true"); + System.setProperty("log4j2.*.JNDI.enableLookup", "true"); } @Override protected void after() { System.clearProperty(TESTKEY); System.clearProperty(TESTKEY2); - System.clearProperty("log4j2.enableJndiLookup"); + System.clearProperty("log4j2.*.JNDI.enableLookup"); } }).around(new JndiRule( JndiLookup.CONTAINER_JNDI_RESOURCE_PATH_PREFIX + TEST_CONTEXT_RESOURCE_NAME, TEST_CONTEXT_NAME)); diff --git a/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/lookup/JndiLookupTest.java b/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/lookup/JndiLookupTest.java index 43a0996adb..bb61bbeef6 100644 --- a/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/lookup/JndiLookupTest.java +++ b/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/lookup/JndiLookupTest.java @@ -46,7 +46,7 @@ public class JndiLookupTest { @BeforeClass public static void beforeClass() { - System.setProperty("log4j2.enableJndiLookup", "true"); + System.setProperty("log4j2.*.JNDI.enableLookup", "true"); } private Map<String, Object> createBindings() { diff --git a/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/lookup/JndiRestrictedLookupTest.java b/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/lookup/JndiRestrictedLookupTest.java index 38ac3ba4eb..10551366c8 100644 --- a/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/lookup/JndiRestrictedLookupTest.java +++ b/log4j-jndi-test/src/test/java/org/apache/logging/log4j/jndi/lookup/JndiRestrictedLookupTest.java @@ -53,7 +53,7 @@ public class JndiRestrictedLookupTest { @BeforeClass public static void beforeClass() { - System.setProperty("log4j2.enableJndiLookup", "true"); + System.setProperty("log4j2.*.JNDI.enableLookup", "true"); } @Test diff --git a/log4j-jndi/src/main/java/org/apache/logging/log4j/jndi/JndiManager.java b/log4j-jndi/src/main/java/org/apache/logging/log4j/jndi/JndiManager.java index 92c65aa968..63ffe537b6 100644 --- a/log4j-jndi/src/main/java/org/apache/logging/log4j/jndi/JndiManager.java +++ b/log4j-jndi/src/main/java/org/apache/logging/log4j/jndi/JndiManager.java @@ -14,14 +14,12 @@ * See the license for the specific language governing permissions and * limitations under the license. */ - package org.apache.logging.log4j.jndi; import java.net.URI; import java.net.URISyntaxException; import java.util.Properties; import java.util.concurrent.TimeUnit; - import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; @@ -215,7 +213,7 @@ public class JndiManager extends AbstractManager { public JndiManager createManager(final String name, final Properties data) { if (!isJndiEnabled()) { throw new IllegalStateException(String.format("JNDI must be enabled by setting one of the %s* properties to true", - Log4jPropertyKey.Constant.JNDI_ENABLED)); + "JNDI.enable{SubKey}")); } try { return new JndiManager(name, new InitialContext(data)); diff --git a/log4j-jndi/src/main/java/org/apache/logging/log4j/jndi/lookup/JndiLookup.java b/log4j-jndi/src/main/java/org/apache/logging/log4j/jndi/lookup/JndiLookup.java index 5dd5d02dae..5755bd1ebb 100644 --- a/log4j-jndi/src/main/java/org/apache/logging/log4j/jndi/lookup/JndiLookup.java +++ b/log4j-jndi/src/main/java/org/apache/logging/log4j/jndi/lookup/JndiLookup.java @@ -16,10 +16,14 @@ */ package org.apache.logging.log4j.jndi.lookup; +import java.util.Objects; +import javax.naming.NamingException; + import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Marker; import org.apache.logging.log4j.MarkerManager; import org.apache.logging.log4j.core.LogEvent; +import org.apache.logging.log4j.core.impl.Log4jPropertyKey; import org.apache.logging.log4j.core.lookup.AbstractLookup; import org.apache.logging.log4j.core.lookup.Lookup; import org.apache.logging.log4j.jndi.JndiManager; @@ -27,15 +31,13 @@ import org.apache.logging.log4j.plugins.Plugin; import org.apache.logging.log4j.plugins.validation.constraints.RequiredProperty; import org.apache.logging.log4j.status.StatusLogger; -import javax.naming.NamingException; -import java.util.Objects; - /** * Looks up keys from JNDI resources. */ @Lookup @Plugin("jndi") -@RequiredProperty(name = "log4j2.enableJndiLookup", value = "true", message = "JNDI must be enabled by setting log4j2.enableJndiLookup=true") +@RequiredProperty(name = Log4jPropertyKey.Constant.JNDI_ENABLE_LOOKUP, value = "true", + message = "JNDI must be enabled by setting JNDI.enableLookup=true") public class JndiLookup extends AbstractLookup { private static final Logger LOGGER = StatusLogger.getLogger(); diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ConcurrentAsyncLoggerToFileBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ConcurrentAsyncLoggerToFileBenchmark.java index e065090340..c2d5904bf1 100644 --- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ConcurrentAsyncLoggerToFileBenchmark.java +++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ConcurrentAsyncLoggerToFileBenchmark.java @@ -86,7 +86,7 @@ public class ConcurrentAsyncLoggerToFileBenchmark { @Setup public final void before() throws IOException { Files.deleteIfExists(Path.of("target", "ConcurrentAsyncLoggerToFileBenchmark.log")); - System.setProperty(LoggingSystemProperty.SYSTEM_IS_WEBAPP, "false"); + System.setProperty(LoggingSystemProperty.Constant.WEB_IS_WEBAPP, "false"); asyncLoggerType.setProperties(); queueFullPolicy.setProperties(); logger = LogManager.getLogger(ConcurrentAsyncLoggerToFileBenchmark.class); diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/FileAppenderThrowableBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/FileAppenderThrowableBenchmark.java index 9ae1d67b80..f8a14c6de5 100644 --- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/FileAppenderThrowableBenchmark.java +++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/FileAppenderThrowableBenchmark.java @@ -58,7 +58,7 @@ import org.slf4j.LoggerFactory; public class FileAppenderThrowableBenchmark { static { // log4j2 - System.setProperty(LoggingSystemProperty.SYSTEM_IS_WEBAPP, "false"); + System.setProperty(LoggingSystemProperty.Constant.WEB_IS_WEBAPP, "false"); System.setProperty("log4j.configurationFile", "log4j2-perf-file-throwable.xml"); // log4j 1.2 System.setProperty("log4j.configuration", "log4j12-perf-file-throwable.xml");
