You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2021/12/17 20:48:30 UTC
[logging-log4j2] branch release-2.x updated: [LOG4J2-3242] Rename JNDI enablement property from 'log4j2.enableJndi' to 'log4j2.enableJndiLookup', 'log4j2.enableJndiJms', and 'log4j2.enableJndiContextSelector'.
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/release-2.x by this push:
new 4a4b753 [LOG4J2-3242] Rename JNDI enablement property from 'log4j2.enableJndi' to 'log4j2.enableJndiLookup', 'log4j2.enableJndiJms', and 'log4j2.enableJndiContextSelector'.
4a4b753 is described below
commit 4a4b7530b1848e630a65d79e9c7dc388a5a7785b
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Fri Dec 17 15:48:27 2021 -0500
[LOG4J2-3242] Rename JNDI enablement property from 'log4j2.enableJndi'
to 'log4j2.enableJndiLookup', 'log4j2.enableJndiJms', and
'log4j2.enableJndiContextSelector'.
---
.../log4j/core/appender/AbstractManager.java | 3 +-
.../log4j/core/appender/mom/JmsManager.java | 4 +--
.../logging/log4j/core/lookup/Interpolator.java | 4 +--
.../logging/log4j/core/lookup/JndiLookup.java | 18 +++++++---
.../apache/logging/log4j/core/net/JndiManager.java | 41 +++++++++++++++-------
.../log4j/core/selector/JndiContextSelector.java | 4 +--
.../log4j/core/appender/mom/JmsAppenderTest.java | 7 +++-
.../routing/RoutingAppenderWithJndiTest.java | 12 +++++--
.../log4j/core/lookup/InterpolatorTest.java | 4 +--
.../log4j/core/lookup/JndiDisabledLookupTest.java | 36 ++-----------------
.../logging/log4j/core/lookup/JndiLookupTest.java | 2 +-
.../core/lookup/JndiRestrictedLookupTest.java | 2 +-
.../logging/log4j/core/net/JndiManagerTest.java | 31 ++++++++++++++++
src/changes/changes.xml | 10 +++---
src/site/xdoc/manual/appenders.xml | 4 +--
src/site/xdoc/manual/configuration.xml.vm | 22 ++++++++++--
16 files changed, 129 insertions(+), 75 deletions(-)
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
index 59492a3..b253f95 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/AbstractManager.java
@@ -18,6 +18,7 @@ package org.apache.logging.log4j.core.appender;
import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@@ -110,7 +111,7 @@ public abstract class AbstractManager implements AutoCloseable {
@SuppressWarnings("unchecked")
M manager = (M) MAP.get(name);
if (manager == null) {
- manager = factory.createManager(name, data);
+ manager = Objects.requireNonNull(factory, "factory").createManager(name, data);
if (manager == null) {
throw new IllegalStateException("ManagerFactory [" + factory + "] unable to create manager for ["
+ name + "] with data [" + data + "]");
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsManager.java
index afaf859..beeb775 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/mom/JmsManager.java
@@ -124,7 +124,7 @@ public class JmsManager extends AbstractManager {
@Override
public JmsManager createManager(final String name, final JmsManagerConfiguration data) {
- if (JndiManager.isJndiEnabled()) {
+ if (JndiManager.isJndiJmsEnabled()) {
try {
return new JmsManager(name, data);
} catch (final Exception e) {
@@ -132,7 +132,7 @@ public class JmsManager extends AbstractManager {
return null;
}
} else {
- logger().error("JNDI has not been enabled. The log4j2.enableJndiJava property must be set to true");
+ logger().error("JNDI must be enabled by setting log4j2.enableJndiJms=true");
return null;
}
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java
index 9c491ac..6da580c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/Interpolator.java
@@ -78,7 +78,7 @@ public class Interpolator extends AbstractConfigurationAwareLookup {
for (final Map.Entry<String, PluginType<?>> entry : plugins.entrySet()) {
try {
final Class<? extends StrLookup> clazz = entry.getValue().getPluginClass().asSubclass(StrLookup.class);
- if (!clazz.getName().equals("org.apache.logging.log4j.core.lookup.JndiLookup") || JndiManager.isJndiEnabled()) {
+ if (!clazz.getName().equals("org.apache.logging.log4j.core.lookup.JndiLookup") || JndiManager.isJndiLookupEnabled()) {
strLookupMap.put(entry.getKey().toLowerCase(), ReflectionUtil.instantiate(clazz));
}
} catch (final Throwable t) {
@@ -109,7 +109,7 @@ public class Interpolator extends AbstractConfigurationAwareLookup {
strLookupMap.put("lower", new LowerLookup());
strLookupMap.put("upper", new UpperLookup());
// JNDI
- if (JndiManager.isJndiEnabled()) {
+ if (JndiManager.isJndiLookupEnabled()) {
try {
// [LOG4J2-703] We might be on Android
strLookupMap.put(LOOKUP_KEY_JNDI,
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JndiLookup.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JndiLookup.java
index 30e65ad..a783ea4 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JndiLookup.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/JndiLookup.java
@@ -41,9 +41,19 @@ public class JndiLookup extends AbstractLookup {
static final String CONTAINER_JNDI_RESOURCE_PATH_PREFIX = "java:comp/env/";
/**
+ * Constructs a new instance or throw IllegalStateException if this feature is disabled.
+ */
+ public JndiLookup() {
+ if (!JndiManager.isJndiLookupEnabled()) {
+ throw new IllegalStateException("JNDI must be enabled by setting log4j2.enableJndiLookup=true");
+ }
+ }
+
+ /**
* Looks up the value of the JNDI resource.
+ *
* @param event The current LogEvent (is ignored by this StrLookup).
- * @param key the JNDI resource name to be looked up, may be null
+ * @param key the JNDI resource name to be looked up, may be null
* @return The String value of the JNDI resource.
*/
@Override
@@ -61,9 +71,9 @@ public class JndiLookup extends AbstractLookup {
}
/**
- * Convert the given JNDI name to the actual JNDI name to use.
- * Default implementation applies the "java:comp/env/" prefix
- * unless other scheme like "java:" is given.
+ * Convert the given JNDI name to the actual JNDI name to use. Default implementation applies the "java:comp/env/"
+ * prefix unless other scheme like "java:" is given.
+ *
* @param jndiName The name of the resource.
* @return The fully qualified name to look up.
*/
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java
index 127679e..d9d0c0b 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/JndiManager.java
@@ -39,13 +39,29 @@ import org.apache.logging.log4j.util.PropertiesUtil;
public class JndiManager extends AbstractManager {
private static final JndiManagerFactory FACTORY = new JndiManagerFactory();
- private static final String PREFIX = "log4j2.";
- private static final String JAVA = "java";
+ private static final String PREFIX = "log4j2.enableJndi";
+ private static final String JAVA_SCHEME = "java";
private final InitialContext context;
+ private static boolean isJndiEnabled(final String subKey) {
+ return PropertiesUtil.getProperties().getBooleanProperty(PREFIX + subKey, false);
+ }
+
public static boolean isJndiEnabled() {
- return PropertiesUtil.getProperties().getBooleanProperty("log4j2.enableJndiJava", false);
+ return isJndiContextSelectorEnabled() || isJndiJmsEnabled() || isJndiLookupEnabled();
+ }
+
+ public static boolean isJndiContextSelectorEnabled() {
+ return isJndiEnabled("ContextSelector");
+ }
+
+ public static boolean isJndiJmsEnabled() {
+ return isJndiEnabled("Jms");
+ }
+
+ public static boolean isJndiLookupEnabled() {
+ return isJndiEnabled("Lookup");
}
private JndiManager(final String name, final InitialContext context) {
@@ -183,7 +199,7 @@ public class JndiManager extends AbstractManager {
}
try {
URI uri = new URI(name);
- if (uri.getScheme() == null || uri.getScheme().equals(JAVA)) {
+ if (uri.getScheme() == null || uri.getScheme().equals(JAVA_SCHEME)) {
return (T) this.context.lookup(name);
}
LOGGER.warn("Unsupported JNDI URI - {}", name);
@@ -197,15 +213,14 @@ public class JndiManager extends AbstractManager {
@Override
public JndiManager createManager(final String name, final Properties data) {
- if (isJndiEnabled()) {
- try {
- return new JndiManager(name, new InitialContext(data));
- } catch (final NamingException e) {
- LOGGER.error("Error creating JNDI InitialContext.", e);
- return null;
- }
- } else {
- return new JndiManager(name, null);
+ if (!isJndiEnabled()) {
+ throw new IllegalStateException(String.format("JNDI must be enabled by setting one of the %s* properties to true", PREFIX));
+ }
+ try {
+ return new JndiManager(name, new InitialContext(data));
+ } catch (final NamingException e) {
+ LOGGER.error("Error creating JNDI InitialContext for '{}'.", name, e);
+ return null;
}
}
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/selector/JndiContextSelector.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/selector/JndiContextSelector.java
index 21fbcbe..a4df310 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/selector/JndiContextSelector.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/selector/JndiContextSelector.java
@@ -94,8 +94,8 @@ public class JndiContextSelector implements NamedContextSelector {
private static final StatusLogger LOGGER = StatusLogger.getLogger();
public JndiContextSelector() {
- if (!JndiManager.isJndiEnabled()) {
- throw new IllegalStateException("JNDI must be enabled by setting log4j2.enableJndiJava=true");
+ if (!JndiManager.isJndiContextSelectorEnabled()) {
+ throw new IllegalStateException("JNDI must be enabled by setting log4j2.enableJndiContextSelector=true");
}
}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/JmsAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/JmsAppenderTest.java
index 988614c..4c5b1a9 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/JmsAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/mom/JmsAppenderTest.java
@@ -85,8 +85,13 @@ public class JmsAppenderTest {
public RuleChain rules = RuleChain.outerRule(jndiRule).around(ctx);
@BeforeClass
+ public static void afterClass() throws Exception {
+ System.clearProperty("log4j2.enableJndiJms");
+ }
+
+ @BeforeClass
public static void beforeClass() throws Exception {
- System.setProperty("log4j2.enableJndiJava", "true");
+ System.setProperty("log4j2.enableJndiJms", "true");
}
public JmsAppenderTest() throws Exception {
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithJndiTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithJndiTest.java
index a169ca2..1b36062 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithJndiTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/routing/RoutingAppenderWithJndiTest.java
@@ -52,7 +52,9 @@ public class RoutingAppenderWithJndiTest {
public static RuleChain rules = RuleChain.outerRule(new JndiRule(initBindings())).around(loggerContextRule);
private static Map<String, Object> initBindings() {
- System.setProperty("log4j2.enableJndiJava", "true");
+ System.setProperty("log4j2.enableJndiLookup", "true");
+ //System.setProperty("log4j2.enableJndiJms", "true");
+ //System.setProperty("log4j2.enableJndiContextSelector", "true");
return Collections.emptyMap();
}
@@ -64,8 +66,12 @@ public class RoutingAppenderWithJndiTest {
@After
public void after() {
- listAppender1.clear();
- listAppender2.clear();
+ if (listAppender1 != null) {
+ listAppender1.clear();
+ }
+ if (listAppender2 != null) {
+ listAppender2.clear();
+ }
}
@Test
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java
index 4c96551..6289cd8 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java
@@ -49,14 +49,14 @@ public class InterpolatorTest {
protected void before() throws Throwable {
System.setProperty(TESTKEY, TESTVAL);
System.setProperty(TESTKEY2, TESTVAL);
- System.setProperty("log4j2.enableJndiJava", "true");
+ System.setProperty("log4j2.enableJndiLookup", "true");
}
@Override
protected void after() {
System.clearProperty(TESTKEY);
System.clearProperty(TESTKEY2);
- System.clearProperty("log4j2.enableJndiJava");
+ System.clearProperty("log4j2.enableJndiLookup");
}
}).around(new JndiRule(
JndiLookup.CONTAINER_JNDI_RESOURCE_PATH_PREFIX + TEST_CONTEXT_RESOURCE_NAME, TEST_CONTEXT_NAME));
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiDisabledLookupTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiDisabledLookupTest.java
index b4f453b..9400c68 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiDisabledLookupTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiDisabledLookupTest.java
@@ -16,49 +16,19 @@
*/
package org.apache.logging.log4j.core.lookup;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
+import static org.junit.jupiter.api.Assertions.assertThrows;
-import org.apache.logging.log4j.junit.JndiRule;
-import org.junit.BeforeClass;
-import org.junit.Rule;
import org.junit.Test;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
/**
* JndiDisabledLookupTest
*
- * Verifies the Lookups are disabled without the log4j2.enableJndiJava property set to true.
+ * Verifies the Lookups are disabled without the log4j2.enableJndiLookup property set to true.
*/
public class JndiDisabledLookupTest {
- private static final String TEST_CONTEXT_RESOURCE_NAME = "logging/context-name";
- private static final String TEST_CONTEXT_NAME = "app-1";
- private static final String TEST_INTEGRAL_NAME = "int-value";
- private static final int TEST_INTEGRAL_VALUE = 42;
- private static final String TEST_STRINGS_NAME = "string-collection";
- private static final Collection<String> TEST_STRINGS_COLLECTION = Arrays.asList("one", "two", "three");
-
- @Rule
- public JndiRule jndiRule = new JndiRule(createBindings());
-
- private Map<String, Object> createBindings() {
- final Map<String, Object> map = new HashMap<>();
- map.put(JndiLookup.CONTAINER_JNDI_RESOURCE_PATH_PREFIX + TEST_CONTEXT_RESOURCE_NAME, TEST_CONTEXT_NAME);
- map.put(JndiLookup.CONTAINER_JNDI_RESOURCE_PATH_PREFIX + TEST_INTEGRAL_NAME, TEST_INTEGRAL_VALUE);
- map.put(JndiLookup.CONTAINER_JNDI_RESOURCE_PATH_PREFIX + TEST_STRINGS_NAME, TEST_STRINGS_COLLECTION);
- return map;
- }
-
@Test
public void testLookup() {
- final StrLookup lookup = new JndiLookup();
-
- String contextName = lookup.lookup(TEST_CONTEXT_RESOURCE_NAME);
- assertNull(contextName);
+ assertThrows(IllegalStateException.class, JndiLookup::new);
}
}
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiLookupTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiLookupTest.java
index 90301df..454faa9 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiLookupTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiLookupTest.java
@@ -45,7 +45,7 @@ public class JndiLookupTest {
@BeforeClass
public static void beforeClass() {
- System.setProperty("log4j2.enableJndiJava", "true");
+ System.setProperty("log4j2.enableJndiLookup", "true");
}
private Map<String, Object> createBindings() {
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiRestrictedLookupTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiRestrictedLookupTest.java
index 21c23e9..e40cdb2 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiRestrictedLookupTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/JndiRestrictedLookupTest.java
@@ -30,7 +30,7 @@ public class JndiRestrictedLookupTest {
@BeforeClass
public static void beforeClass() {
- System.setProperty("log4j2.enableJndiJava", "true");
+ System.setProperty("log4j2.enableJndiLookup", "true");
}
@Test
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/JndiManagerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/JndiManagerTest.java
index 2006b0a..e421734 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/net/JndiManagerTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/net/JndiManagerTest.java
@@ -18,6 +18,9 @@
package org.apache.logging.log4j.core.net;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import java.util.Properties;
import org.junit.jupiter.api.Test;
@@ -30,4 +33,32 @@ public class JndiManagerTest {
public void testIsJndiEnabled() {
assertFalse(JndiManager.isJndiEnabled());
}
+
+ @Test
+ public void testIsJndiContextSelectorEnabled() {
+ assertFalse(JndiManager.isJndiContextSelectorEnabled());
+ }
+
+ @Test
+ public void testIsJndiJmsEnabled() {
+ assertFalse(JndiManager.isJndiJmsEnabled());
+ }
+
+ @Test
+ public void testIsJndiLookupEnabled() {
+ assertFalse(JndiManager.isJndiLookupEnabled());
+ }
+
+ @Test
+ public void testNoInstanceByDefault() {
+ assertThrows(IllegalStateException.class, () -> JndiManager.getDefaultManager());
+ assertThrows(IllegalStateException.class, () -> JndiManager.getDefaultManager(null));
+ assertThrows(IllegalStateException.class, () -> JndiManager.getDefaultManager("A"));
+ assertThrows(IllegalStateException.class, () -> JndiManager.getJndiManager(null));
+ assertThrows(IllegalStateException.class, () -> JndiManager.getJndiManager(new Properties()));
+ assertThrows(IllegalStateException.class, () -> JndiManager.getJndiManager(null, null, null, null, null, null));
+ assertThrows(IllegalStateException.class, () -> JndiManager.getJndiManager("A", "A", "A", "A", "A", new Properties()));
+ }
+
+
}
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index f54e627..08e3fd5 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -30,12 +30,12 @@
- "remove" - Removed
-->
<release version="2.17.0" date="2021-MM-dd" description="GA Release 2.17.0">
- <action issue="LOG4J2-3242" dev="rgoers" type="fix">
- Limit JNDI to the java protocol only. JNDI will remain disabled by default. The enablement
- property has been renamed to 'log4j2.enableJndiJava'
+ <action issue="LOG4J2-3242" dev="rgoers, ggregory" type="fix">
+ Limit JNDI to the java protocol only. JNDI will remain disabled by default. Rename JNDI enablement property from
+ 'log4j2.enableJndi' to 'log4j2.enableJndiLookup', 'log4j2.enableJndiJms', and 'log4j2.enableJndiContextSelector'.
</action>
<action issue="LOG4J2-3241" dev="rgoers" type="fix">
- Do not declare log4j-api-java9 and log4j-core-java9 as depdendencies as it causes problems with the
+ Do not declare log4j-api-java9 and log4j-core-java9 as dependencies as it causes problems with the
Maven enforcer plugin.
</action>
<action issue="LOG4J2-3247" dev="ggregory" type="fix">
@@ -45,7 +45,7 @@
Log4j 1.2 bridge for Syslog Appender defaults to port 512 instead of 514.
</action>
<action issue="LOG4J2-3237" dev="ggregory" type="fix">
- Log4j 1.2 bridge API hard codes protocol to TCP.
+ Log4j 1.2 bridge API hard codes the Syslog protocol to TCP.
</action>
</release>
<release version="2.16.0" date="2021-12-13" description="GA Release 2.16.0">
diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml
index 28a2373..35d88c0 100644
--- a/src/site/xdoc/manual/appenders.xml
+++ b/src/site/xdoc/manual/appenders.xml
@@ -1541,8 +1541,8 @@ public class ConnectionFactory {
<subsection name="JMS Appender">
<p>The JMS Appender sends the formatted log event to a JMS Destination.</p>
<p>The JMS Appender requires JNDI support so as of release 2.16.0 this appender will not function unless
- <code>log4j2.enableJndiJava=true</code>log4j2.enableJndiJava=true is configured as a system property or environment
- variable. See the <a href="./configuration.html#enableJndiJava">enableJndiJava</a> system property.</p>
+ <code>log4j2.enableJndiJms=true</code> is configured as a system property or environment
+ variable. See the <a href="./configuration.html#enableJndiJms">enableJndiJms</a> system property.</p>
<p>
Note that in Log4j 2.0, this appender was split into a JMSQueueAppender and a JMSTopicAppender. Starting
in Log4j 2.1, these appenders were combined into the JMS Appender which makes no distinction between queues
diff --git a/src/site/xdoc/manual/configuration.xml.vm b/src/site/xdoc/manual/configuration.xml.vm
index 2793a68..2c1c315 100644
--- a/src/site/xdoc/manual/configuration.xml.vm
+++ b/src/site/xdoc/manual/configuration.xml.vm
@@ -2149,11 +2149,27 @@ public class AwesomeTest {
</td>
</tr>
<tr>
- <td><a name="enableJndiJava"/>log4j2.enableJndiJava</td>
- <td>LOG4J_ENABLE_JNDI_JAVA</td>
+ <td><a name="enableJndiContextSelector"/>log4j2.enableJndiContextSelector</td>
+ <td>LOG4J_ENABLE_JNDI_CONTEXT_SELECTOR</td>
<td>false</td>
<td>
- When true, Log4j components that use JNDI java protocol are enabled. When false, the default, they are disabled.
+ When true, the Log4j context selector that uses the JNDI java protocol is enabled. When false, the default, they are disabled.
+ </td>
+ </tr>
+ <tr>
+ <td><a name="enableJndiJms"/>log4j2.enableJndiJms</td>
+ <td>LOG4J_ENABLE_JNDI_JMS</td>
+ <td>false</td>
+ <td>
+ When true, the Log4j JMS Appender that uses JNDI's java protocol is enabled. When false, the default, they are disabled.
+ </td>
+ </tr>
+ <tr>
+ <td><a name="enableJndiLookup"/>log4j2.enableJndiLookup</td>
+ <td>LOG4J_ENABLE_JNDI_LOOKUP</td>
+ <td>false</td>
+ <td>
+ When true, the Log4j lookup that uses JNDI's java protocol is enabled. When false, the default, they are disabled.
</td>
</tr>
<tr>