You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gi...@apache.org on 2024/08/28 13:57:07 UTC

(logging-log4j2) branch 2.x-site-stg-out updated: Add website content generated from `f27f6bce68f4c5e42b100366d5cf1b4018525e2a`

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch 2.x-site-stg-out
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/2.x-site-stg-out by this push:
     new 6f12cc62e2 Add website content generated from `f27f6bce68f4c5e42b100366d5cf1b4018525e2a`
6f12cc62e2 is described below

commit 6f12cc62e2ef56490477ac9edd503bac100f19aa
Author: ASF Logging Services RM <pr...@logging.apache.org>
AuthorDate: Wed Aug 28 13:57:01 2024 +0000

    Add website content generated from `f27f6bce68f4c5e42b100366d5cf1b4018525e2a`
---
 javadoc/log4j-api/allclasses-index.html            |  10 +-
 javadoc/log4j-api/constant-values.html             |  36 ++--
 javadoc/log4j-api/deprecated-list.html             |  23 ++-
 javadoc/log4j-api/index-all.html                   |  69 ++-----
 javadoc/log4j-api/member-search-index.js           |   2 +-
 .../org/apache/logging/log4j/spi/CopyOnWrite.html  |   6 +-
 .../logging/log4j/spi/DefaultThreadContextMap.html |  24 ++-
 .../logging/log4j/spi/NoOpThreadContextMap.html    | 118 ++++++------
 .../org/apache/logging/log4j/spi/Provider.html     | 202 ++++-----------------
 .../log4j/spi/class-use/LoggerContextFactory.html  |  12 +-
 .../log4j/spi/class-use/ThreadContextMap.html      |  15 +-
 .../apache/logging/log4j/spi/package-summary.html  |  10 +-
 .../log4j/util/class-use/ReadOnlyStringMap.html    |   2 +-
 javadoc/log4j-api/serialized-form.html             |  10 +-
 javadoc/log4j-core/index-all.html                  |   4 +
 javadoc/log4j-core/member-search-index.js          |   2 +-
 .../logging/log4j/core/impl/Log4jProvider.html     |  59 +++++-
 manual/garbagefree.html                            |   9 +-
 manual/simple-logger.html                          | 177 ++++++++++++++++--
 manual/systemproperties.html                       |   9 +-
 manual/thread-context.html                         | 188 ++-----------------
 plugin-reference.html                              |   2 +-
 release-notes.html                                 |   4 +-
 sitemap.xml                                        | 116 ++++++------
 24 files changed, 500 insertions(+), 609 deletions(-)

diff --git a/javadoc/log4j-api/allclasses-index.html b/javadoc/log4j-api/allclasses-index.html
index fe02004a99..7972b536d9 100644
--- a/javadoc/log4j-api/allclasses-index.html
+++ b/javadoc/log4j-api/allclasses-index.html
@@ -119,8 +119,8 @@ loadScripts(document, 'script');</script>
 <div class="block">Log4j API Constants.</div>
 </div>
 <div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="org/apache/logging/log4j/spi/CopyOnWrite.html" title="interface in org.apache.logging.log4j.spi">CopyOnWrite</a></div>
-<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
-<div class="block">Marker interface indicating that the implementing class is a copy-on-write data structure.</div>
+<div class="col-last even-row-color all-classes-table all-classes-table-tab1">Deprecated.
+<div class="deprecation-comment">Since 2.24.0 no class implements this.</div>
 </div>
 <div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/logging/log4j/message/DefaultFlowMessageFactory.html" title="class in org.apache.logging.log4j.message">DefaultFlowMessageFactory</a></div>
 <div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
@@ -128,7 +128,7 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html" title="class in org.apache.logging.log4j.spi">DefaultThreadContextMap</a></div>
 <div class="col-last even-row-color all-classes-table all-classes-table-tab2">
-<div class="block">The actual ThreadContext Map.</div>
+<div class="block">The default implementation of <a href="org/apache/logging/log4j/spi/ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a></div>
 </div>
 <div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/logging/log4j/spi/DefaultThreadContextStack.html" title="class in org.apache.logging.log4j.spi">DefaultThreadContextStack</a></div>
 <div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
@@ -362,8 +362,8 @@ loadScripts(document, 'script');</script>
 <div class="block">TODO</div>
 </div>
 <div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html" title="class in org.apache.logging.log4j.spi">NoOpThreadContextMap</a></div>
-<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">Deprecated.
-<div class="deprecation-comment">since 2.24.0.</div>
+<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
+<div class="block"><code>ThreadContextMap</code> implementation used when either of system properties <code>disableThreadContextMap</code> or .</div>
 </div>
 <div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="org/apache/logging/log4j/message/ObjectArrayMessage.html" title="class in org.apache.logging.log4j.message">ObjectArrayMessage</a></div>
 <div class="col-last even-row-color all-classes-table all-classes-table-tab2">
diff --git a/javadoc/log4j-api/constant-values.html b/javadoc/log4j-api/constant-values.html
index 38655dfc98..991d068477 100644
--- a/javadoc/log4j-api/constant-values.html
+++ b/javadoc/log4j-api/constant-values.html
@@ -159,33 +159,21 @@ loadScripts(document, 'script');</script>
 <div class="table-header col-first">Modifier and Type</div>
 <div class="table-header col-second">Constant Field</div>
 <div class="table-header col-last">Value</div>
-<div class="col-first even-row-color"><code id="org.apache.logging.log4j.spi.Provider.COPY_ON_WRITE_CONTEXT_MAP">protected&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second even-row-color"><code><a href="org/apache/logging/log4j/spi/Provider.html#COPY_ON_WRITE_CONTEXT_MAP">COPY_ON_WRITE_CONTEXT_MAP</a></code></div>
-<div class="col-last even-row-color"><code>"CopyOnWrite"</code></div>
-<div class="col-first odd-row-color"><code id="org.apache.logging.log4j.spi.Provider.CURRENT_VERSION">protected&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second odd-row-color"><code><a href="org/apache/logging/log4j/spi/Provider.html#CURRENT_VERSION">CURRENT_VERSION</a></code></div>
-<div class="col-last odd-row-color"><code>"2.6.0"</code></div>
-<div class="col-first even-row-color"><code id="org.apache.logging.log4j.spi.Provider.FACTORY_PRIORITY">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second even-row-color"><code><a href="org/apache/logging/log4j/spi/Provider.html#FACTORY_PRIORITY">FACTORY_PRIORITY</a></code></div>
-<div class="col-last even-row-color"><code>"FactoryPriority"</code></div>
-<div class="col-first odd-row-color"><code id="org.apache.logging.log4j.spi.Provider.GARBAGE_FREE_CONTEXT_MAP">protected&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second odd-row-color"><code><a href="org/apache/logging/log4j/spi/Provider.html#GARBAGE_FREE_CONTEXT_MAP">GARBAGE_FREE_CONTEXT_MAP</a></code></div>
-<div class="col-last odd-row-color"><code>"GarbageFree"</code></div>
+<div class="col-first even-row-color"><code id="org.apache.logging.log4j.spi.Provider.CURRENT_VERSION">protected&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/logging/log4j/spi/Provider.html#CURRENT_VERSION">CURRENT_VERSION</a></code></div>
+<div class="col-last even-row-color"><code>"2.6.0"</code></div>
+<div class="col-first odd-row-color"><code id="org.apache.logging.log4j.spi.Provider.FACTORY_PRIORITY">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="org/apache/logging/log4j/spi/Provider.html#FACTORY_PRIORITY">FACTORY_PRIORITY</a></code></div>
+<div class="col-last odd-row-color"><code>"FactoryPriority"</code></div>
 <div class="col-first even-row-color"><code id="org.apache.logging.log4j.spi.Provider.LOGGER_CONTEXT_FACTORY">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
 <div class="col-second even-row-color"><code><a href="org/apache/logging/log4j/spi/Provider.html#LOGGER_CONTEXT_FACTORY">LOGGER_CONTEXT_FACTORY</a></code></div>
 <div class="col-last even-row-color"><code>"LoggerContextFactory"</code></div>
-<div class="col-first odd-row-color"><code id="org.apache.logging.log4j.spi.Provider.NO_OP_CONTEXT_MAP">protected&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second odd-row-color"><code><a href="org/apache/logging/log4j/spi/Provider.html#NO_OP_CONTEXT_MAP">NO_OP_CONTEXT_MAP</a></code></div>
-<div class="col-last odd-row-color"><code>"NoOp"</code></div>
-<div class="col-first even-row-color"><code id="org.apache.logging.log4j.spi.Provider.PROVIDER_PROPERTY_NAME">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second even-row-color"><code><a href="org/apache/logging/log4j/spi/Provider.html#PROVIDER_PROPERTY_NAME">PROVIDER_PROPERTY_NAME</a></code></div>
-<div class="col-last even-row-color"><code>"log4j.provider"</code></div>
-<div class="col-first odd-row-color"><code id="org.apache.logging.log4j.spi.Provider.THREAD_CONTEXT_MAP">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second odd-row-color"><code><a href="org/apache/logging/log4j/spi/Provider.html#THREAD_CONTEXT_MAP">THREAD_CONTEXT_MAP</a></code></div>
-<div class="col-last odd-row-color"><code>"ThreadContextMap"</code></div>
-<div class="col-first even-row-color"><code id="org.apache.logging.log4j.spi.Provider.WEB_APP_CONTEXT_MAP">protected&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second even-row-color"><code><a href="org/apache/logging/log4j/spi/Provider.html#WEB_APP_CONTEXT_MAP">WEB_APP_CONTEXT_MAP</a></code></div>
-<div class="col-last even-row-color"><code>"WebApp"</code></div>
+<div class="col-first odd-row-color"><code id="org.apache.logging.log4j.spi.Provider.PROVIDER_PROPERTY_NAME">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="org/apache/logging/log4j/spi/Provider.html#PROVIDER_PROPERTY_NAME">PROVIDER_PROPERTY_NAME</a></code></div>
+<div class="col-last odd-row-color"><code>"log4j.provider"</code></div>
+<div class="col-first even-row-color"><code id="org.apache.logging.log4j.spi.Provider.THREAD_CONTEXT_MAP">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color"><code><a href="org/apache/logging/log4j/spi/Provider.html#THREAD_CONTEXT_MAP">THREAD_CONTEXT_MAP</a></code></div>
+<div class="col-last even-row-color"><code>"ThreadContextMap"</code></div>
 </div>
 </li>
 </ul>
diff --git a/javadoc/log4j-api/deprecated-list.html b/javadoc/log4j-api/deprecated-list.html
index 9c6aaf11ad..c660fd8a72 100644
--- a/javadoc/log4j-api/deprecated-list.html
+++ b/javadoc/log4j-api/deprecated-list.html
@@ -52,6 +52,7 @@ loadScripts(document, 'script');</script>
 <h1 title="Deprecated API" class="title">Deprecated API</h1>
 <h2 title="Contents">Contents</h2>
 <ul>
+<li><a href="#interface">Interfaces</a></li>
 <li><a href="#class">Classes</a></li>
 <li><a href="#field">Fields</a></li>
 <li><a href="#method">Methods</a></li>
@@ -60,6 +61,21 @@ loadScripts(document, 'script');</script>
 </div>
 <ul class="block-list">
 <li>
+<div id="interface">
+<div class="caption"><span>Deprecated Interfaces</span></div>
+<div class="summary-table two-column-summary">
+<div class="table-header col-first">Interface</div>
+<div class="table-header col-last">Description</div>
+<div class="col-summary-item-name even-row-color"><a href="org/apache/logging/log4j/spi/CopyOnWrite.html" title="interface in org.apache.logging.log4j.spi">org.apache.logging.log4j.spi.CopyOnWrite</a></div>
+<div class="col-last even-row-color">
+<div class="deprecation-comment">Since 2.24.0 no class implements this.</div>
+</div>
+</div>
+</div>
+</li>
+</ul>
+<ul class="block-list">
+<li>
 <div id="class">
 <div class="caption"><span>Deprecated Classes</span></div>
 <div class="summary-table two-column-summary">
@@ -73,11 +89,6 @@ loadScripts(document, 'script');</script>
 <div class="col-last odd-row-color">
 <div class="deprecation-comment">with no replacement - no longer used</div>
 </div>
-<div class="col-summary-item-name even-row-color"><a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html" title="class in org.apache.logging.log4j.spi">org.apache.logging.log4j.spi.NoOpThreadContextMap</a></div>
-<div class="col-last even-row-color">
-<div class="deprecation-comment">since 2.24.0. Return the <a href="org/apache/logging/log4j/spi/Provider.html#NO_OP_CONTEXT_MAP">"NoOp"</a> constant in
- <a href="org/apache/logging/log4j/spi/Provider.html#getThreadContextMap()"><code>Provider.getThreadContextMap()</code></a> instead.</div>
-</div>
 </div>
 </div>
 </li>
@@ -220,7 +231,7 @@ loadScripts(document, 'script');</script>
 </div>
 <div class="col-summary-item-name odd-row-color"><a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html#%3Cinit%3E(boolean)">org.apache.logging.log4j.spi.DefaultThreadContextMap<wbr>(boolean)</a></div>
 <div class="col-last odd-row-color">
-<div class="deprecation-comment">Since 2.24.0. See <a href="org/apache/logging/log4j/spi/Provider.html#getThreadContextMap()"><code>Provider.getThreadContextMap()</code></a> on how to obtain a no-op map.</div>
+<div class="deprecation-comment">Since 2.24.0. Use <a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html" title="class in org.apache.logging.log4j.spi"><code>NoOpThreadContextMap</code></a> for a no-op implementation.</div>
 </div>
 <div class="col-summary-item-name even-row-color"><a href="org/apache/logging/log4j/spi/DefaultThreadContextStack.html#%3Cinit%3E(boolean)">org.apache.logging.log4j.spi.DefaultThreadContextStack<wbr>(boolean)</a></div>
 <div class="col-last even-row-color">
diff --git a/javadoc/log4j-api/index-all.html b/javadoc/log4j-api/index-all.html
index 6f88ca7fd1..cdf631c2b6 100644
--- a/javadoc/log4j-api/index-all.html
+++ b/javadoc/log4j-api/index-all.html
@@ -395,9 +395,7 @@ loadScripts(document, 'script');</script>
 <dt><a href="org/apache/logging/log4j/spi/MutableThreadContextStack.html#clear()" class="member-name-link">clear()</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/MutableThreadContextStack.html" title="class in org.apache.logging.log4j.spi">MutableThreadContextStack</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html#clear()" class="member-name-link">clear()</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html" title="class in org.apache.logging.log4j.spi">NoOpThreadContextMap</a></dt>
-<dd>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
-&nbsp;</dd>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/ReadOnlyThreadContextMap.html#clear()" class="member-name-link">clear()</a> - Method in interface org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/ReadOnlyThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ReadOnlyThreadContextMap</a></dt>
 <dd>
 <div class="block">Clears the context.</div>
@@ -487,9 +485,7 @@ loadScripts(document, 'script');</script>
 <dt><a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html#containsKey(java.lang.String)" class="member-name-link">containsKey(String)</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html" title="class in org.apache.logging.log4j.spi">DefaultThreadContextMap</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html#containsKey(java.lang.String)" class="member-name-link">containsKey(String)</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html" title="class in org.apache.logging.log4j.spi">NoOpThreadContextMap</a></dt>
-<dd>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
-&nbsp;</dd>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/ReadOnlyThreadContextMap.html#containsKey(java.lang.String)" class="member-name-link">containsKey(String)</a> - Method in interface org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/ReadOnlyThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ReadOnlyThreadContextMap</a></dt>
 <dd>
 <div class="block">Determines if the key is in the context.</div>
@@ -530,13 +526,11 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Returns a copy of the ContextStack.</div>
 </dd>
-<dt><a href="org/apache/logging/log4j/spi/Provider.html#COPY_ON_WRITE_CONTEXT_MAP" class="member-name-link">COPY_ON_WRITE_CONTEXT_MAP</a> - Static variable in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/Provider.html" title="class in org.apache.logging.log4j.spi">Provider</a></dt>
-<dd>
-<div class="block">Constant used to select a copy-on-write implementation of <a href="org/apache/logging/log4j/spi/ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a>.</div>
-</dd>
 <dt><a href="org/apache/logging/log4j/spi/CopyOnWrite.html" class="type-name-link" title="interface in org.apache.logging.log4j.spi">CopyOnWrite</a> - Interface in <a href="org/apache/logging/log4j/spi/package-summary.html">org.apache.logging.log4j.spi</a></dt>
 <dd>
-<div class="block">Marker interface indicating that the implementing class is a copy-on-write data structure.</div>
+<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
+<div class="deprecation-comment">Since 2.24.0 no class implements this.</div>
+</div>
 </dd>
 <dt><a href="org/apache/logging/log4j/message/ParameterizedMessage.html#countArgumentPlaceholders(java.lang.String)" class="member-name-link">countArgumentPlaceholders(String)</a> - Static method in class org.apache.logging.log4j.message.<a href="org/apache/logging/log4j/message/ParameterizedMessage.html" title="class in org.apache.logging.log4j.message">ParameterizedMessage</a></dt>
 <dd>
@@ -925,14 +919,14 @@ loadScripts(document, 'script');</script>
 </dd>
 <dt><a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html" class="type-name-link" title="class in org.apache.logging.log4j.spi">DefaultThreadContextMap</a> - Class in <a href="org/apache/logging/log4j/spi/package-summary.html">org.apache.logging.log4j.spi</a></dt>
 <dd>
-<div class="block">The actual ThreadContext Map.</div>
+<div class="block">The default implementation of <a href="org/apache/logging/log4j/spi/ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a></div>
 </dd>
 <dt><a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html#%3Cinit%3E()" class="member-name-link">DefaultThreadContextMap()</a> - Constructor for class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html" title="class in org.apache.logging.log4j.spi">DefaultThreadContextMap</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html#%3Cinit%3E(boolean)" class="member-name-link">DefaultThreadContextMap(boolean)</a> - Constructor for class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html" title="class in org.apache.logging.log4j.spi">DefaultThreadContextMap</a></dt>
 <dd>
 <div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
-<div class="deprecation-comment">Since 2.24.0. See <a href="org/apache/logging/log4j/spi/Provider.html#getThreadContextMap()"><code>Provider.getThreadContextMap()</code></a> on how to obtain a no-op map.</div>
+<div class="deprecation-comment">Since 2.24.0. Use <a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html" title="class in org.apache.logging.log4j.spi"><code>NoOpThreadContextMap</code></a> for a no-op implementation.</div>
 </div>
 </dd>
 <dt><a href="org/apache/logging/log4j/spi/DefaultThreadContextStack.html" class="type-name-link" title="class in org.apache.logging.log4j.spi">DefaultThreadContextStack</a> - Class in <a href="org/apache/logging/log4j/spi/package-summary.html">org.apache.logging.log4j.spi</a></dt>
@@ -2046,10 +2040,6 @@ loadScripts(document, 'script');</script>
 </dl>
 <h2 class="title" id="I:G">G</h2>
 <dl class="index">
-<dt><a href="org/apache/logging/log4j/spi/Provider.html#GARBAGE_FREE_CONTEXT_MAP" class="member-name-link">GARBAGE_FREE_CONTEXT_MAP</a> - Static variable in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/Provider.html" title="class in org.apache.logging.log4j.spi">Provider</a></dt>
-<dd>
-<div class="block">Constant used to select a garbage-free implementation of <a href="org/apache/logging/log4j/spi/ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a>.</div>
-</dd>
 <dt><a href="org/apache/logging/log4j/util/Lazy.html#get()" class="member-name-link">get()</a> - Method in interface org.apache.logging.log4j.util.<a href="org/apache/logging/log4j/util/Lazy.html" title="interface in org.apache.logging.log4j.util">Lazy</a></dt>
 <dd>
 <div class="block">Returns the value held by this lazy.</div>
@@ -2069,9 +2059,7 @@ loadScripts(document, 'script');</script>
 <dt><a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html#get(java.lang.String)" class="member-name-link">get(String)</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html" title="class in org.apache.logging.log4j.spi">DefaultThreadContextMap</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html#get(java.lang.String)" class="member-name-link">get(String)</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html" title="class in org.apache.logging.log4j.spi">NoOpThreadContextMap</a></dt>
-<dd>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
-&nbsp;</dd>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/ReadOnlyThreadContextMap.html#get(java.lang.String)" class="member-name-link">get(String)</a> - Method in interface org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/ReadOnlyThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ReadOnlyThreadContextMap</a></dt>
 <dd>
 <div class="block">Gets the context identified by the <code>key</code> parameter.</div>
@@ -2237,9 +2225,7 @@ loadScripts(document, 'script');</script>
 <dt><a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html#getCopy()" class="member-name-link">getCopy()</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html" title="class in org.apache.logging.log4j.spi">DefaultThreadContextMap</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html#getCopy()" class="member-name-link">getCopy()</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html" title="class in org.apache.logging.log4j.spi">NoOpThreadContextMap</a></dt>
-<dd>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
-&nbsp;</dd>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/ReadOnlyThreadContextMap.html#getCopy()" class="member-name-link">getCopy()</a> - Method in interface org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/ReadOnlyThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ReadOnlyThreadContextMap</a></dt>
 <dd>
 <div class="block">Gets a non-<code>null</code> mutable copy of current thread's context Map.</div>
@@ -2493,9 +2479,7 @@ loadScripts(document, 'script');</script>
 <dt><a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html#getImmutableMapOrNull()" class="member-name-link">getImmutableMapOrNull()</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html" title="class in org.apache.logging.log4j.spi">DefaultThreadContextMap</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html#getImmutableMapOrNull()" class="member-name-link">getImmutableMapOrNull()</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html" title="class in org.apache.logging.log4j.spi">NoOpThreadContextMap</a></dt>
-<dd>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
-&nbsp;</dd>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/ReadOnlyThreadContextMap.html#getImmutableMapOrNull()" class="member-name-link">getImmutableMapOrNull()</a> - Method in interface org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/ReadOnlyThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ReadOnlyThreadContextMap</a></dt>
 <dd>
 <div class="block">Returns an immutable view on the context Map or <code>null</code> if the context map is empty.</div>
@@ -3539,7 +3523,7 @@ loadScripts(document, 'script');</script>
 </dd>
 <dt><a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html#INHERITABLE_MAP" class="member-name-link">INHERITABLE_MAP</a> - Static variable in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html" title="class in org.apache.logging.log4j.spi">DefaultThreadContextMap</a></dt>
 <dd>
-<div class="block">Property name ("isThreadContextMapInheritable" ) for selecting <code>InheritableThreadLocal</code> (value "true") or plain
+<div class="block">Property name ("isThreadContextMapInheritable") for selecting <code>InheritableThreadLocal</code> (value "true") or plain
  <code>ThreadLocal</code> (value is not "true") in the implementation.</div>
 </dd>
 <dt><a href="org/apache/logging/log4j/spi/ThreadContextMapFactory.html#init()" class="member-name-link">init()</a> - Static method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/ThreadContextMapFactory.html" title="class in org.apache.logging.log4j.spi">ThreadContextMapFactory</a></dt>
@@ -3576,6 +3560,8 @@ loadScripts(document, 'script');</script>
 <dd>
 <div class="block">Singleton instance.</div>
 </dd>
+<dt><a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html#INSTANCE" class="member-name-link">INSTANCE</a> - Static variable in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html" title="class in org.apache.logging.log4j.spi">NoOpThreadContextMap</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/util/InternalApi.html" class="type-name-link" title="annotation in org.apache.logging.log4j.util">InternalApi</a> - Annotation Type in <a href="org/apache/logging/log4j/util/package-summary.html">org.apache.logging.log4j.util</a></dt>
 <dd>
 <div class="block">Indicates that the annotated element is considered an internal API to Log4j and should not be used by external
@@ -3645,9 +3631,7 @@ loadScripts(document, 'script');</script>
 <dt><a href="org/apache/logging/log4j/spi/MutableThreadContextStack.html#isEmpty()" class="member-name-link">isEmpty()</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/MutableThreadContextStack.html" title="class in org.apache.logging.log4j.spi">MutableThreadContextStack</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html#isEmpty()" class="member-name-link">isEmpty()</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html" title="class in org.apache.logging.log4j.spi">NoOpThreadContextMap</a></dt>
-<dd>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
-&nbsp;</dd>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/ReadOnlyThreadContextMap.html#isEmpty()" class="member-name-link">isEmpty()</a> - Method in interface org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/ReadOnlyThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ReadOnlyThreadContextMap</a></dt>
 <dd>
 <div class="block">Returns true if the Map is empty.</div>
@@ -5328,25 +5312,16 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/MessageFactory2Adapter.html#newMessage(java.lang.String,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object)" class="member-name-link">newMessage(String, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/MessageFa [...]
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/logging/log4j/spi/Provider.html#NO_OP_CONTEXT_MAP" class="member-name-link">NO_OP_CONTEXT_MAP</a> - Static variable in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/Provider.html" title="class in org.apache.logging.log4j.spi">Provider</a></dt>
-<dd>
-<div class="block">Constant used to disable the <a href="org/apache/logging/log4j/spi/ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a>.</div>
-</dd>
 <dt><a href="org/apache/logging/log4j/LogBuilder.html#NOOP" class="member-name-link">NOOP</a> - Static variable in interface org.apache.logging.log4j.<a href="org/apache/logging/log4j/LogBuilder.html" title="interface in org.apache.logging.log4j">LogBuilder</a></dt>
 <dd>
 <div class="block">NOOP Logbuilder</div>
 </dd>
 <dt><a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html" class="type-name-link" title="class in org.apache.logging.log4j.spi">NoOpThreadContextMap</a> - Class in <a href="org/apache/logging/log4j/spi/package-summary.html">org.apache.logging.log4j.spi</a></dt>
 <dd>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
-<div class="deprecation-comment">since 2.24.0. Return the <a href="org/apache/logging/log4j/spi/Provider.html#NO_OP_CONTEXT_MAP">"NoOp"</a> constant in
- <a href="org/apache/logging/log4j/spi/Provider.html#getThreadContextMap()"><code>Provider.getThreadContextMap()</code></a> instead.</div>
-</div>
+<div class="block"><code>ThreadContextMap</code> implementation used when either of system properties <code>disableThreadContextMap</code> or .</div>
 </dd>
 <dt><a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html#%3Cinit%3E()" class="member-name-link">NoOpThreadContextMap()</a> - Constructor for class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html" title="class in org.apache.logging.log4j.spi">NoOpThreadContextMap</a></dt>
-<dd>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
-&nbsp;</dd>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/util/Chars.html#NUL" class="member-name-link">NUL</a> - Static variable in class org.apache.logging.log4j.util.<a href="org/apache/logging/log4j/util/Chars.html" title="class in org.apache.logging.log4j.util">Chars</a></dt>
 <dd>
 <div class="block">NUL.</div>
@@ -5682,9 +5657,7 @@ loadScripts(document, 'script');</script>
 <dt><a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html#put(java.lang.String,java.lang.String)" class="member-name-link">put(String, String)</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html" title="class in org.apache.logging.log4j.spi">DefaultThreadContextMap</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html#put(java.lang.String,java.lang.String)" class="member-name-link">put(String, String)</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html" title="class in org.apache.logging.log4j.spi">NoOpThreadContextMap</a></dt>
-<dd>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
-&nbsp;</dd>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/ThreadContextMap.html#put(java.lang.String,java.lang.String)" class="member-name-link">put(String, String)</a> - Method in interface org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a></dt>
 <dd>
 <div class="block">Puts a context value (the <code>o</code> parameter) as identified
@@ -5820,9 +5793,7 @@ loadScripts(document, 'script');</script>
 <dt><a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html#remove(java.lang.String)" class="member-name-link">remove(String)</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/DefaultThreadContextMap.html" title="class in org.apache.logging.log4j.spi">DefaultThreadContextMap</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html#remove(java.lang.String)" class="member-name-link">remove(String)</a> - Method in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/NoOpThreadContextMap.html" title="class in org.apache.logging.log4j.spi">NoOpThreadContextMap</a></dt>
-<dd>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
-&nbsp;</dd>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/spi/ThreadContextMap.html#remove(java.lang.String)" class="member-name-link">remove(String)</a> - Method in interface org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a></dt>
 <dd>
 <div class="block">Removes the context identified by the <code>key</code>
@@ -7464,10 +7435,6 @@ the order they are declared.</div>
 </dd>
 <dt><a href="org/apache/logging/log4j/spi/LoggerRegistry.WeakMapFactory.html#%3Cinit%3E()" class="member-name-link">WeakMapFactory()</a> - Constructor for class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/LoggerRegistry.WeakMapFactory.html" title="class in org.apache.logging.log4j.spi">LoggerRegistry.WeakMapFactory</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/logging/log4j/spi/Provider.html#WEB_APP_CONTEXT_MAP" class="member-name-link">WEB_APP_CONTEXT_MAP</a> - Static variable in class org.apache.logging.log4j.spi.<a href="org/apache/logging/log4j/spi/Provider.html" title="class in org.apache.logging.log4j.spi">Provider</a></dt>
-<dd>
-<div class="block">Constant used to select a web application-safe implementation of <a href="org/apache/logging/log4j/spi/ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a>.</div>
-</dd>
 <dt><a href="org/apache/logging/log4j/message/MapMessage.html#with(java.lang.String,boolean)" class="member-name-link">with(String, boolean)</a> - Method in class org.apache.logging.log4j.message.<a href="org/apache/logging/log4j/message/MapMessage.html" title="class in org.apache.logging.log4j.message">MapMessage</a></dt>
 <dd>
 <div class="block">Adds an item to the data Map.</div>
diff --git a/javadoc/log4j-api/member-search-index.js b/javadoc/log4j-api/member-search-index.js
index 077f488630..f04b1f346a 100644
--- a/javadoc/log4j-api/member-search-index.js
+++ b/javadoc/log4j-api/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.logging.log4j.spi","c":"AbstractLogger","l":"AbstractLogger()","u":"%3Cinit%3E()"},{"p":"org.apache.logging.log4j.spi","c":"AbstractLogger","l":"AbstractLogger(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"org.apache.logging.log4j.spi","c":"AbstractLogger","l":"AbstractLogger(String, MessageFactory)","u":"%3Cinit%3E(java.lang.String,org.apache.logging.log4j.message.MessageFactory)"},{"p":"org.apache.logging.log4j.spi","c":"AbstractLogger","l":"A [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.logging.log4j.spi","c":"AbstractLogger","l":"AbstractLogger()","u":"%3Cinit%3E()"},{"p":"org.apache.logging.log4j.spi","c":"AbstractLogger","l":"AbstractLogger(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"org.apache.logging.log4j.spi","c":"AbstractLogger","l":"AbstractLogger(String, MessageFactory)","u":"%3Cinit%3E(java.lang.String,org.apache.logging.log4j.message.MessageFactory)"},{"p":"org.apache.logging.log4j.spi","c":"AbstractLogger","l":"A [...]
\ No newline at end of file
diff --git a/javadoc/log4j-api/org/apache/logging/log4j/spi/CopyOnWrite.html b/javadoc/log4j-api/org/apache/logging/log4j/spi/CopyOnWrite.html
index 8163f3d1c0..4ab3e0c0dc 100644
--- a/javadoc/log4j-api/org/apache/logging/log4j/spi/CopyOnWrite.html
+++ b/javadoc/log4j-api/org/apache/logging/log4j/spi/CopyOnWrite.html
@@ -70,7 +70,11 @@ loadScripts(document, 'script');</script>
 </div>
 <section class="class-description" id="class-description">
 <hr>
-<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">CopyOnWrite</span></div>
+<div class="type-signature"><span class="annotations"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
+</span><span class="modifiers">public interface </span><span class="element-name type-name-label">CopyOnWrite</span></div>
+<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
+<div class="deprecation-comment">Since 2.24.0 no class implements this.</div>
+</div>
 <div class="block">Marker interface indicating that the implementing class is a copy-on-write data structure.</div>
 <dl class="notes">
 <dt>Since:</dt>
diff --git a/javadoc/log4j-api/org/apache/logging/log4j/spi/DefaultThreadContextMap.html b/javadoc/log4j-api/org/apache/logging/log4j/spi/DefaultThreadContextMap.html
index a4925e70e8..550e7dd4d4 100644
--- a/javadoc/log4j-api/org/apache/logging/log4j/spi/DefaultThreadContextMap.html
+++ b/javadoc/log4j-api/org/apache/logging/log4j/spi/DefaultThreadContextMap.html
@@ -84,10 +84,16 @@ loadScripts(document, 'script');</script>
 <div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DefaultThreadContextMap</span>
 <span class="extends-implements">extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
 implements <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a>, <a href="../util/ReadOnlyStringMap.html" title="interface in org.apache.logging.log4j.util">ReadOnlyStringMap</a></span></div>
-<div class="block">The actual ThreadContext Map. A new ThreadContext Map is created each time it is updated and the Map stored is always
- immutable. This means the Map can be passed to other threads without concern that it will be updated. Since it is
- expected that the Map will be passed to many more log events than the number of keys it contains the performance
- should be much better than if the Map was copied for each event.</div>
+<div class="block">The default implementation of <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a>
+ <p>
+      An instance of UnmodifiableArrayBackedMap can be represented as a single <code>Object[]</code>, which can safely
+      be stored on the <code>ThreadLocal</code> with no fear of classloader-related memory leaks.
+  </p>
+  <p>
+      Performance of the underlying <code>UnmodifiableArrayBackedMap</code> exceeds
+      <a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html" title="class or interface in java.util" class="external-link"><code>HashMap</code></a> in all supported operations other than <code>get()</code>. Note that <code>get()</code> performance scales
+      linearly with the current map size, and callers are advised to minimize this work.
+ </p></div>
 <dl class="notes">
 <dt>See Also:</dt>
 <dd>
@@ -111,7 +117,7 @@ implements <a href="ThreadContextMap.html" title="interface in org.apache.loggin
 <div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
 <div class="col-second even-row-color"><code><a href="#INHERITABLE_MAP" class="member-name-link">INHERITABLE_MAP</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">Property name ("isThreadContextMapInheritable" ) for selecting <code>InheritableThreadLocal</code> (value "true") or plain
+<div class="block">Property name ("isThreadContextMapInheritable") for selecting <code>InheritableThreadLocal</code> (value "true") or plain
  <code>ThreadLocal</code> (value is not "true") in the implementation.</div>
 </div>
 </div>
@@ -127,7 +133,7 @@ implements <a href="ThreadContextMap.html" title="interface in org.apache.loggin
 <div class="table-header col-last">Description</div>
 <div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">DefaultThreadContextMap</a>()</code></div>
 <div class="col-last even-row-color">&nbsp;</div>
-<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(boolean)" class="member-name-link">DefaultThreadContextMap</a><wbr>(boolean&nbsp;useMap)</code></div>
+<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(boolean)" class="member-name-link">DefaultThreadContextMap</a><wbr>(boolean&nbsp;ignored)</code></div>
 <div class="col-last odd-row-color">
 <div class="block"><span class="deprecated-label">Deprecated.</span>
 <div class="deprecation-comment">Since 2.24.0.</div>
@@ -256,7 +262,7 @@ S&gt;&nbsp;void</code></div>
 <section class="detail" id="INHERITABLE_MAP">
 <h3>INHERITABLE_MAP</h3>
 <div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">INHERITABLE_MAP</span></div>
-<div class="block">Property name ("isThreadContextMapInheritable" ) for selecting <code>InheritableThreadLocal</code> (value "true") or plain
+<div class="block">Property name ("isThreadContextMapInheritable") for selecting <code>InheritableThreadLocal</code> (value "true") or plain
  <code>ThreadLocal</code> (value is not "true") in the implementation.</div>
 <dl class="notes">
 <dt>See Also:</dt>
@@ -286,9 +292,9 @@ S&gt;&nbsp;void</code></div>
 <section class="detail" id="&lt;init&gt;(boolean)">
 <h3>DefaultThreadContextMap</h3>
 <div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
-</span><span class="modifiers">public</span>&nbsp;<span class="element-name">DefaultThreadContextMap</span><wbr><span class="parameters">(boolean&nbsp;useMap)</span></div>
+</span><span class="modifiers">public</span>&nbsp;<span class="element-name">DefaultThreadContextMap</span><wbr><span class="parameters">(boolean&nbsp;ignored)</span></div>
 <div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
-<div class="deprecation-comment">Since 2.24.0. See <a href="Provider.html#getThreadContextMap()"><code>Provider.getThreadContextMap()</code></a> on how to obtain a no-op map.</div>
+<div class="deprecation-comment">Since 2.24.0. Use <a href="NoOpThreadContextMap.html" title="class in org.apache.logging.log4j.spi"><code>NoOpThreadContextMap</code></a> for a no-op implementation.</div>
 </div>
 </section>
 </li>
diff --git a/javadoc/log4j-api/org/apache/logging/log4j/spi/NoOpThreadContextMap.html b/javadoc/log4j-api/org/apache/logging/log4j/spi/NoOpThreadContextMap.html
index 14192ed6b4..41d731752b 100644
--- a/javadoc/log4j-api/org/apache/logging/log4j/spi/NoOpThreadContextMap.html
+++ b/javadoc/log4j-api/org/apache/logging/log4j/spi/NoOpThreadContextMap.html
@@ -46,13 +46,13 @@ loadScripts(document, 'script');</script>
 <ul class="sub-nav-list">
 <li>Summary:&nbsp;</li>
 <li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method-summary">Method</a></li>
 </ul>
 <ul class="sub-nav-list">
 <li>Detail:&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method-detail">Method</a></li>
 </ul>
@@ -81,14 +81,10 @@ loadScripts(document, 'script');</script>
 <dd><code><a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a></code></dd>
 </dl>
 <hr>
-<div class="type-signature"><span class="annotations"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
+<div class="type-signature"><span class="annotations">@NullMarked
 </span><span class="modifiers">public class </span><span class="element-name type-name-label">NoOpThreadContextMap</span>
 <span class="extends-implements">extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
 implements <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a></span></div>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
-<div class="deprecation-comment">since 2.24.0. Return the <a href="Provider.html#NO_OP_CONTEXT_MAP">"NoOp"</a> constant in
- <a href="Provider.html#getThreadContextMap()"><code>Provider.getThreadContextMap()</code></a> instead.</div>
-</div>
 <div class="block"><code>ThreadContextMap</code> implementation used when either of system properties <code>disableThreadContextMap</code> or .
  <code>disableThreadContext</code> is <code>true</code>. This implementation does nothing.</div>
 <dl class="notes">
@@ -98,6 +94,21 @@ implements <a href="ThreadContextMap.html" title="interface in org.apache.loggin
 </section>
 <section class="summary">
 <ul class="summary-list">
+<!-- =========== FIELD SUMMARY =========== -->
+<li>
+<section class="field-summary" id="field-summary">
+<h2>Field Summary</h2>
+<div class="caption"><span>Fields</span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Field</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>static final <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a></code></div>
+<div class="col-second even-row-color"><code><a href="#INSTANCE" class="member-name-link">INSTANCE</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
+</div>
+</section>
+</li>
 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
 <li>
 <section class="constructor-summary" id="constructor-summary">
@@ -107,9 +118,7 @@ implements <a href="ThreadContextMap.html" title="interface in org.apache.loggin
 <div class="table-header col-first">Constructor</div>
 <div class="table-header col-last">Description</div>
 <div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">NoOpThreadContextMap</a>()</code></div>
-<div class="col-last even-row-color">
-<div class="block"><span class="deprecated-label">Deprecated.</span></div>
-&nbsp;</div>
+<div class="col-last even-row-color">&nbsp;</div>
 </div>
 </section>
 </li>
@@ -118,61 +127,53 @@ implements <a href="ThreadContextMap.html" title="interface in org.apache.loggin
 <section class="method-summary" id="method-summary">
 <h2>Method Summary</h2>
 <div id="method-summary-table">
-<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab( [...]
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab( [...]
 <div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
 <div class="summary-table three-column-summary">
 <div class="table-header col-first">Modifier and Type</div>
 <div class="table-header col-second">Method</div>
 <div class="table-header col-last">Description</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#clear()" class="member-name-link">clear</a>()</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
-<div class="block"><span class="deprecated-label">Deprecated.</span></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#clear()" class="member-name-link">clear</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Clears the context.</div>
 </div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>boolean</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#containsKey(java.lang.String)" class="member-name-link">containsKey</a><wbr>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
-<div class="block"><span class="deprecated-label">Deprecated.</span></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#containsKey(java.lang.String)" class="member-name-link">containsKey</a><wbr>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Determines if the key is in the context.</div>
 </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#get(java.lang.String)" class="member-name-link">get</a><wbr>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
-<div class="block"><span class="deprecated-label">Deprecated.</span></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#get(java.lang.String)" class="member-name-link">get</a><wbr>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key)</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Gets the context identified by the <code>key</code> parameter.</div>
 </div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/javase/8/docs/api/jav [...]
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#getCopy()" class="member-name-link">getCopy</a>()</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
-<div class="block"><span class="deprecated-label">Deprecated.</span></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title= [...]
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCopy()" class="member-name-link">getCopy</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Gets a non-<code>null</code> mutable copy of current thread's context Map.</div>
 </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/javase/8/docs/api/ja [...]
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#getImmutableMapOrNull()" class="member-name-link">getImmutableMapOrNull</a>()</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
-<div class="block"><span class="deprecated-label">Deprecated.</span></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.h [...]
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getImmutableMapOrNull()" class="member-name-link">getImmutableMapOrNull</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Returns an immutable view on the context Map or <code>null</code> if the context map is empty.</div>
 </div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>boolean</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#isEmpty()" class="member-name-link">isEmpty</a>()</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
-<div class="block"><span class="deprecated-label">Deprecated.</span></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isEmpty()" class="member-name-link">isEmpty</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Returns true if the Map is empty.</div>
 </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>void</code></div>
-<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#put(java.lang.String,java.lang.String)" class="member-name-link">put</a><wbr>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key,
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#put(java.lang.String,java.lang.String)" class="member-name-link">put</a><wbr>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key,
  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;value)</code></div>
-<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
-<div class="block"><span class="deprecated-label">Deprecated.</span></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Puts a context value (the <code>o</code> parameter) as identified
  with the <code>key</code> parameter into the current thread's
  context map.</div>
 </div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>void</code></div>
-<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#remove(java.lang.String)" class="member-name-link">remove</a><wbr>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key)</code></div>
-<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
-<div class="block"><span class="deprecated-label">Deprecated.</span></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#remove(java.lang.String)" class="member-name-link">remove</a><wbr>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key)</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Removes the context identified by the <code>key</code>
  parameter.</div>
 </div>
@@ -188,6 +189,24 @@ implements <a href="ThreadContextMap.html" title="interface in org.apache.loggin
 </section>
 <section class="details">
 <ul class="details-list">
+<!-- ============ FIELD DETAIL =========== -->
+<li>
+<section class="field-details" id="field-detail">
+<h2>Field Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="INSTANCE">
+<h3>INSTANCE</h3>
+<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a></span>&nbsp;<span class="element-name">INSTANCE</span></div>
+<dl class="notes">
+<dt>Since:</dt>
+<dd>2.24.0</dd>
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
 <!-- ========= CONSTRUCTOR DETAIL ======== -->
 <li>
 <section class="constructor-details" id="constructor-detail">
@@ -197,7 +216,6 @@ implements <a href="ThreadContextMap.html" title="interface in org.apache.loggin
 <section class="detail" id="&lt;init&gt;()">
 <h3>NoOpThreadContextMap</h3>
 <div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NoOpThreadContextMap</span>()</div>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
 </section>
 </li>
 </ul>
@@ -212,7 +230,6 @@ implements <a href="ThreadContextMap.html" title="interface in org.apache.loggin
 <section class="detail" id="clear()">
 <h3>clear</h3>
 <div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">clear</span>()</div>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="ThreadContextMap.html#clear()">ThreadContextMap</a></code></span></div>
 <div class="block">Clears the context.</div>
 <dl class="notes">
@@ -225,7 +242,6 @@ implements <a href="ThreadContextMap.html" title="interface in org.apache.loggin
 <section class="detail" id="containsKey(java.lang.String)">
 <h3>containsKey</h3>
 <div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">containsKey</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key)</span></div>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="ThreadContextMap.html#containsKey(java.lang.String)">ThreadContextMap</a></code></span></div>
 <div class="block">Determines if the key is in the context.</div>
 <dl class="notes">
@@ -241,8 +257,7 @@ implements <a href="ThreadContextMap.html" title="interface in org.apache.loggin
 <li>
 <section class="detail" id="get(java.lang.String)">
 <h3>get</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">get</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key)</span></div>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">get</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key) [...]
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="ThreadContextMap.html#get(java.lang.String)">ThreadContextMap</a></code></span></div>
 <div class="block">Gets the context identified by the <code>key</code> parameter.
 
@@ -261,7 +276,6 @@ implements <a href="ThreadContextMap.html" title="interface in org.apache.loggin
 <section class="detail" id="getCopy()">
 <h3>getCopy</h3>
 <div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interfa [...]
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="ThreadContextMap.html#getCopy()">ThreadContextMap</a></code></span></div>
 <div class="block">Gets a non-<code>null</code> mutable copy of current thread's context Map.</div>
 <dl class="notes">
@@ -275,8 +289,7 @@ implements <a href="ThreadContextMap.html" title="interface in org.apache.loggin
 <li>
 <section class="detail" id="getImmutableMapOrNull()">
 <h3>getImmutableMapOrNull</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interfa [...]
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class  [...]
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="ThreadContextMap.html#getImmutableMapOrNull()">ThreadContextMap</a></code></span></div>
 <div class="block">Returns an immutable view on the context Map or <code>null</code> if the context map is empty.</div>
 <dl class="notes">
@@ -291,7 +304,6 @@ implements <a href="ThreadContextMap.html" title="interface in org.apache.loggin
 <section class="detail" id="isEmpty()">
 <h3>isEmpty</h3>
 <div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isEmpty</span>()</div>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="ThreadContextMap.html#isEmpty()">ThreadContextMap</a></code></span></div>
 <div class="block">Returns true if the Map is empty.</div>
 <dl class="notes">
@@ -307,7 +319,6 @@ implements <a href="ThreadContextMap.html" title="interface in org.apache.loggin
 <h3>put</h3>
 <div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">put</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key,
  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;value)</span></div>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="ThreadContextMap.html#put(java.lang.String,java.lang.String)">ThreadContextMap</a></code></span></div>
 <div class="block">Puts a context value (the <code>o</code> parameter) as identified
  with the <code>key</code> parameter into the current thread's
@@ -328,7 +339,6 @@ implements <a href="ThreadContextMap.html" title="interface in org.apache.loggin
 <section class="detail" id="remove(java.lang.String)">
 <h3>remove</h3>
 <div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">remove</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;key)</span></div>
-<div class="deprecation-block"><span class="deprecated-label">Deprecated.</span></div>
 <div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="ThreadContextMap.html#remove(java.lang.String)">ThreadContextMap</a></code></span></div>
 <div class="block">Removes the context identified by the <code>key</code>
  parameter.</div>
diff --git a/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html b/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html
index 74e8fa80c0..2c848b0d5d 100644
--- a/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html
+++ b/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html
@@ -77,7 +77,8 @@ loadScripts(document, 'script');</script>
 </div>
 <section class="class-description" id="class-description">
 <hr>
-<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">Provider</span>
+<div class="type-signature"><span class="annotations">@NullMarked
+</span><span class="modifiers">public class </span><span class="element-name type-name-label">Provider</span>
 <span class="extends-implements">extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
 <div class="block">Service class used to bind the Log4j API with an implementation.
  <p>
@@ -101,27 +102,17 @@ loadScripts(document, 'script');</script>
 <div class="table-header col-second">Field</div>
 <div class="table-header col-last">Description</div>
 <div class="col-first even-row-color"><code>protected static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second even-row-color"><code><a href="#COPY_ON_WRITE_CONTEXT_MAP" class="member-name-link">COPY_ON_WRITE_CONTEXT_MAP</a></code></div>
+<div class="col-second even-row-color"><code><a href="#CURRENT_VERSION" class="member-name-link">CURRENT_VERSION</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">Constant used to select a copy-on-write implementation of <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a>.</div>
-</div>
-<div class="col-first odd-row-color"><code>protected static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second odd-row-color"><code><a href="#CURRENT_VERSION" class="member-name-link">CURRENT_VERSION</a></code></div>
-<div class="col-last odd-row-color">
 <div class="block">Constant inlined by the compiler</div>
 </div>
-<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second even-row-color"><code><a href="#FACTORY_PRIORITY" class="member-name-link">FACTORY_PRIORITY</a></code></div>
-<div class="col-last even-row-color">
+<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#FACTORY_PRIORITY" class="member-name-link">FACTORY_PRIORITY</a></code></div>
+<div class="col-last odd-row-color">
 <div class="block"><span class="deprecated-label">Deprecated.</span>
 <div class="deprecation-comment">since 2.24.0</div>
 </div>
 </div>
-<div class="col-first odd-row-color"><code>protected static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second odd-row-color"><code><a href="#GARBAGE_FREE_CONTEXT_MAP" class="member-name-link">GARBAGE_FREE_CONTEXT_MAP</a></code></div>
-<div class="col-last odd-row-color">
-<div class="block">Constant used to select a garbage-free implementation of <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a>.</div>
-</div>
 <div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
 <div class="col-second even-row-color"><code><a href="#LOGGER_CONTEXT_FACTORY" class="member-name-link">LOGGER_CONTEXT_FACTORY</a></code></div>
 <div class="col-last even-row-color">
@@ -129,28 +120,18 @@ loadScripts(document, 'script');</script>
 <div class="deprecation-comment">since 2.24.0</div>
 </div>
 </div>
-<div class="col-first odd-row-color"><code>protected static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second odd-row-color"><code><a href="#NO_OP_CONTEXT_MAP" class="member-name-link">NO_OP_CONTEXT_MAP</a></code></div>
+<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-second odd-row-color"><code><a href="#PROVIDER_PROPERTY_NAME" class="member-name-link">PROVIDER_PROPERTY_NAME</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block">Constant used to disable the <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a>.</div>
+<div class="block">System property used to specify the class name of the provider to use.</div>
 </div>
 <div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second even-row-color"><code><a href="#PROVIDER_PROPERTY_NAME" class="member-name-link">PROVIDER_PROPERTY_NAME</a></code></div>
+<div class="col-second even-row-color"><code><a href="#THREAD_CONTEXT_MAP" class="member-name-link">THREAD_CONTEXT_MAP</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">System property used to specify the class name of the provider to use.</div>
-</div>
-<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second odd-row-color"><code><a href="#THREAD_CONTEXT_MAP" class="member-name-link">THREAD_CONTEXT_MAP</a></code></div>
-<div class="col-last odd-row-color">
 <div class="block"><span class="deprecated-label">Deprecated.</span>
 <div class="deprecation-comment">since 2.24.0</div>
 </div>
 </div>
-<div class="col-first even-row-color"><code>protected static final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
-<div class="col-second even-row-color"><code><a href="#WEB_APP_CONTEXT_MAP" class="member-name-link">WEB_APP_CONTEXT_MAP</a></code></div>
-<div class="col-last even-row-color">
-<div class="block">Constant used to select a web application-safe implementation of <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a>.</div>
-</div>
 </div>
 </section>
 </li>
@@ -162,17 +143,17 @@ loadScripts(document, 'script');</script>
 <div class="summary-table two-column-summary">
 <div class="table-header col-first">Constructor</div>
 <div class="table-header col-last">Description</div>
-<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.Integer,java.lang.String)" class="member-name-link">Provider</a><wbr>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;priority,
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.Integer,java.lang.String)" class="member-name-link">Provider</a><wbr>(@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;priority,
  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;versions)</code></div>
 <div class="col-last even-row-color">&nbsp;</div>
-<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.lang.Integer,java.lang.String,java.lang.Class)" class="member-name-link">Provider</a><wbr>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;priority,
+<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.lang.Integer,java.lang.String,java.lang.Class)" class="member-name-link">Provider</a><wbr>(@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;priority,
  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;versions,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;&nbsp;loggerContextFactoryClass)</code></div>
+ @Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;&nbsp;loggerContextFactoryClass)</code></div>
 <div class="col-last odd-row-color">&nbsp;</div>
-<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.Integer,java.lang.String,java.lang.Class,java.lang.Class)" class="member-name-link">Provider</a><wbr>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;priority,
+<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.Integer,java.lang.String,java.lang.Class,java.lang.Class)" class="member-name-link">Provider</a><wbr>(@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;priority,
  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;versions,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;&nbsp;loggerContextFactoryClass,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a>&gt;&nbsp;threadContextMapClass)</code></div>
+ @Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;&nbsp;loggerContextFactoryClass,
+ @Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a>&gt;&nbsp;threadContextMapClass)</code></div>
 <div class="col-last even-row-color">&nbsp;</div>
 <div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.util.Properties,java.net.URL,java.lang.ClassLoader)" class="member-name-link">Provider</a><wbr>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html" title="class or interface in java.util" class="external-link">Properties</a>&nbsp;props,
  <a href="https://docs.oracle.com/javase/8/docs/api/java/net/URL.html" title="class or interface in java.net" class="external-link">URL</a>&nbsp;url,
@@ -199,7 +180,7 @@ loadScripts(document, 'script');</script>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
 <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;o)</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
 <div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getClassName()" class="member-name-link">getClassName</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Gets the class name of the <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi"><code>LoggerContextFactory</code></a> implementation of this Provider.</div>
@@ -212,7 +193,7 @@ loadScripts(document, 'script');</script>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Gets the priority (natural ordering) of this Provider.</div>
 </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
 <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getThreadContextMap()" class="member-name-link">getThreadContextMap</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Gets the class name of the <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a> implementation of this Provider.</div>
@@ -220,7 +201,7 @@ loadScripts(document, 'script');</script>
 <div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a></code></div>
 <div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getThreadContextMapInstance()" class="member-name-link">getThreadContextMapInstance</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/net/URL.html" title="class or interface in java.net" class="external-link">URL</a></code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code>@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/net/URL.html" title="class or interface in java.net" class="external-link">URL</a></code></div>
 <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6"><code><a href="#getUrl()" class="member-name-link">getUrl</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4 method-summary-table-tab6">
 <div class="block"><span class="deprecated-label">Deprecated.</span>
@@ -235,12 +216,12 @@ loadScripts(document, 'script');</script>
 <div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
 <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
-<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;</code></div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;</code></div>
 <div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadLoggerContextFactory()" class="member-name-link">loadLoggerContextFactory</a>()</code></div>
 <div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Loads the <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi"><code>LoggerContextFactory</code></a> class specified by this Provider.</div>
 </div>
-<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a>&gt;</code></div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a>&gt;</code></div>
 <div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#loadThreadContextMap()" class="member-name-link">loadThreadContextMap</a>()</code></div>
 <div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
 <div class="block">Loads the <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a> class specified by this Provider.</div>
@@ -354,89 +335,6 @@ loadScripts(document, 'script');</script>
 </dl>
 </section>
 </li>
-<li>
-<section class="detail" id="NO_OP_CONTEXT_MAP">
-<h3>NO_OP_CONTEXT_MAP</h3>
-<div class="member-signature"><span class="modifiers">protected static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">NO_OP_CONTEXT_MAP</span></div>
-<div class="block">Constant used to disable the <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a>.
- <p>
-     <strong>Warning:</strong> the value of this constant does not point to a concrete class name.
- </p></div>
-<dl class="notes">
-<dt>See Also:</dt>
-<dd>
-<ul class="see-list">
-<li><a href="#getThreadContextMap()"><code>getThreadContextMap()</code></a></li>
-<li><a href="../../../../../constant-values.html#org.apache.logging.log4j.spi.Provider.NO_OP_CONTEXT_MAP">Constant Field Values</a></li>
-</ul>
-</dd>
-</dl>
-</section>
-</li>
-<li>
-<section class="detail" id="WEB_APP_CONTEXT_MAP">
-<h3>WEB_APP_CONTEXT_MAP</h3>
-<div class="member-signature"><span class="modifiers">protected static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">WEB_APP_CONTEXT_MAP</span></div>
-<div class="block">Constant used to select a web application-safe implementation of <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a>.
- <p>
-     This implementation only binds JRE classes to <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html" title="class or interface in java.lang" class="external-link"><code>ThreadLocal</code></a> variables.
- </p>
- <p>
-     <strong>Warning:</strong> the value of this constant does not point to a concrete class name.
- </p></div>
-<dl class="notes">
-<dt>See Also:</dt>
-<dd>
-<ul class="see-list">
-<li><a href="#getThreadContextMap()"><code>getThreadContextMap()</code></a></li>
-<li><a href="../../../../../constant-values.html#org.apache.logging.log4j.spi.Provider.WEB_APP_CONTEXT_MAP">Constant Field Values</a></li>
-</ul>
-</dd>
-</dl>
-</section>
-</li>
-<li>
-<section class="detail" id="COPY_ON_WRITE_CONTEXT_MAP">
-<h3>COPY_ON_WRITE_CONTEXT_MAP</h3>
-<div class="member-signature"><span class="modifiers">protected static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">COPY_ON_WRITE_CONTEXT_MAP</span></div>
-<div class="block">Constant used to select a copy-on-write implementation of <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a>.
- <p>
-     <strong>Warning:</strong> the value of this constant does not point to a concrete class name.
- </p></div>
-<dl class="notes">
-<dt>See Also:</dt>
-<dd>
-<ul class="see-list">
-<li><a href="#getThreadContextMap()"><code>getThreadContextMap()</code></a></li>
-<li><a href="../../../../../constant-values.html#org.apache.logging.log4j.spi.Provider.COPY_ON_WRITE_CONTEXT_MAP">Constant Field Values</a></li>
-</ul>
-</dd>
-</dl>
-</section>
-</li>
-<li>
-<section class="detail" id="GARBAGE_FREE_CONTEXT_MAP">
-<h3>GARBAGE_FREE_CONTEXT_MAP</h3>
-<div class="member-signature"><span class="modifiers">protected static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">GARBAGE_FREE_CONTEXT_MAP</span></div>
-<div class="block">Constant used to select a garbage-free implementation of <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a>.
- <p>
-     This implementation must ensure that common operations don't create new object instances. The drawback is
-     the necessity to bind custom classes to <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html" title="class or interface in java.lang" class="external-link"><code>ThreadLocal</code></a> variables.
- </p>
- <p>
-     <strong>Warning:</strong> the value of this constant does not point to a concrete class name.
- </p></div>
-<dl class="notes">
-<dt>See Also:</dt>
-<dd>
-<ul class="see-list">
-<li><a href="#getThreadContextMap()"><code>getThreadContextMap()</code></a></li>
-<li><a href="../../../../../constant-values.html#org.apache.logging.log4j.spi.Provider.GARBAGE_FREE_CONTEXT_MAP">Constant Field Values</a></li>
-</ul>
-</dd>
-</dl>
-</section>
-</li>
 </ul>
 </section>
 </li>
@@ -461,7 +359,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="&lt;init&gt;(java.lang.Integer,java.lang.String)">
 <h3>Provider</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Provider</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;priority,
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Provider</span><wbr><span class="parameters">(@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;priority,
  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;versions)</span></div>
 <dl class="notes">
 <dt>Parameters:</dt>
@@ -475,33 +373,33 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="&lt;init&gt;(java.lang.Integer,java.lang.String,java.lang.Class)">
 <h3>Provider</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Provider</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;priority,
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Provider</span><wbr><span class="parameters">(@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;priority,
  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;versions,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;&nbsp;loggerContextFactoryClass)</span></div>
+ @Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;&nbsp;loggerContextFactoryClass)</span></div>
 <dl class="notes">
 <dt>Parameters:</dt>
 <dd><code>priority</code> - A positive number specifying the provider's priority or <code>null</code> if default,</dd>
 <dd><code>versions</code> - Minimal API version required, should be set to <a href="#CURRENT_VERSION"><code>CURRENT_VERSION</code></a>,</dd>
 <dd><code>loggerContextFactoryClass</code> - A public exported implementation of <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi"><code>LoggerContextFactory</code></a> or <code>
- null</code> if <code>createLoggerContextFactory()</code> is also implemented.</dd>
+ null</code> if <a href="#getLoggerContextFactory()"><code>getLoggerContextFactory()</code></a> is also implemented.</dd>
 </dl>
 </section>
 </li>
 <li>
 <section class="detail" id="&lt;init&gt;(java.lang.Integer,java.lang.String,java.lang.Class,java.lang.Class)">
 <h3>Provider</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Provider</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;priority,
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Provider</span><wbr><span class="parameters">(@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;priority,
  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;versions,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;&nbsp;loggerContextFactoryClass,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a>&gt;&nbsp;threadContextMapClass)</span></div>
+ @Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;&nbsp;loggerContextFactoryClass,
+ @Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a>&gt;&nbsp;threadContextMapClass)</span></div>
 <dl class="notes">
 <dt>Parameters:</dt>
 <dd><code>priority</code> - A positive number specifying the provider's priority or <code>null</code> if default,</dd>
 <dd><code>versions</code> - Minimal API version required, should be set to <a href="#CURRENT_VERSION"><code>CURRENT_VERSION</code></a>,</dd>
 <dd><code>loggerContextFactoryClass</code> - A public exported implementation of <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi"><code>LoggerContextFactory</code></a> or <code>
- null</code> if <code>createLoggerContextFactory()</code> is also implemented,</dd>
+ null</code> if <a href="#getLoggerContextFactory()"><code>getLoggerContextFactory()</code></a> is also implemented,</dd>
 <dd><code>threadContextMapClass</code> - A public exported implementation of <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a> or <code>null</code> if
- <code>createThreadContextMap()</code> is implemented.</dd>
+ <a href="#getThreadContextMapInstance()"><code>getThreadContextMapInstance()</code></a> is implemented.</dd>
 </dl>
 </section>
 </li>
@@ -541,7 +439,7 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="getClassName()">
 <h3>getClassName</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getClassName</span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getClassName</span>()</div>
 <div class="block">Gets the class name of the <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi"><code>LoggerContextFactory</code></a> implementation of this Provider.</div>
 <dl class="notes">
 <dt>Returns:</dt>
@@ -558,17 +456,11 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="loadLoggerContextFactory()">
 <h3>loadLoggerContextFactory</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;</span>&nbsp;<span class="element-name">loadLoggerContextFactory</span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;</span>&nbsp;<span class="element-name">loadLoggerContextFactory</span>()</div>
 <div class="block">Loads the <a href="LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi"><code>LoggerContextFactory</code></a> class specified by this Provider.</div>
 <dl class="notes">
 <dt>Returns:</dt>
 <dd>the LoggerContextFactory implementation class or <code>null</code> if unspecified or a loader error occurred.</dd>
-<dt>See Also:</dt>
-<dd>
-<ul class="see-list">
-<li><code>createLoggerContextFactory()</code></li>
-</ul>
-</dd>
 </dl>
 </section>
 </li>
@@ -587,45 +479,23 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="detail" id="getThreadContextMap()">
 <h3>getThreadContextMap</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getThreadContextMap</span>()</div>
-<div class="block">Gets the class name of the <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a> implementation of this Provider.
- <p>
-     This method should return one of the internal implementations:
-     <ol>
-         <li><code>null</code> if <a href="#loadThreadContextMap()"><code>loadThreadContextMap()</code></a> is implemented,</li>
-         <li><a href="#NO_OP_CONTEXT_MAP"><code>NO_OP_CONTEXT_MAP</code></a>,</li>
-         <li><a href="#WEB_APP_CONTEXT_MAP"><code>WEB_APP_CONTEXT_MAP</code></a>,</li>
-         <li><a href="#COPY_ON_WRITE_CONTEXT_MAP"><code>COPY_ON_WRITE_CONTEXT_MAP</code></a>,</li>
-         <li><a href="#GARBAGE_FREE_CONTEXT_MAP"><code>GARBAGE_FREE_CONTEXT_MAP</code></a>.</li>
-     </ol>
- </p></div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getThreadContextMap</span>()</div>
+<div class="block">Gets the class name of the <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a> implementation of this Provider.</div>
 <dl class="notes">
 <dt>Returns:</dt>
 <dd>the class name of a ThreadContextMap implementation</dd>
-<dt>See Also:</dt>
-<dd>
-<ul class="see-list">
-<li><a href="#loadThreadContextMap()"><code>loadThreadContextMap()</code></a></li>
-</ul>
-</dd>
 </dl>
 </section>
 </li>
 <li>
 <section class="detail" id="loadThreadContextMap()">
 <h3>loadThreadContextMap</h3>
-<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a>&gt;</span>&nbsp;<span class="element-name">loadThreadContextMap</span>()</div>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a>&gt;</span>&nbsp;<span class="element-name">loadThreadContextMap</span>()</div>
 <div class="block">Loads the <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a> class specified by this Provider.</div>
 <dl class="notes">
 <dt>Returns:</dt>
 <dd>the <code>ThreadContextMap</code> implementation class or <code>null</code> if unspecified or a loading error
  occurred.</dd>
-<dt>See Also:</dt>
-<dd>
-<ul class="see-list">
-<li><code>createThreadContextMap()</code></li>
-</ul>
-</dd>
 </dl>
 </section>
 </li>
@@ -645,7 +515,7 @@ loadScripts(document, 'script');</script>
 <section class="detail" id="getUrl()">
 <h3>getUrl</h3>
 <div class="member-signature"><span class="annotations"><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html" title="class or interface in java.lang" class="external-link">@Deprecated</a>
-</span><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/javase/8/docs/api/java/net/URL.html" title="class or interface in java.net" class="external-link">URL</a></span>&nbsp;<span class="element-name">getUrl</span>()</div>
+</span><span class="modifiers">public</span>&nbsp;<span class="return-type">@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/net/URL.html" title="class or interface in java.net" class="external-link">URL</a></span>&nbsp;<span class="element-name">getUrl</span>()</div>
 <div class="deprecation-block"><span class="deprecated-label">Deprecated.</span>
 <div class="deprecation-comment">since 2.24.0, without replacement.</div>
 </div>
diff --git a/javadoc/log4j-api/org/apache/logging/log4j/spi/class-use/LoggerContextFactory.html b/javadoc/log4j-api/org/apache/logging/log4j/spi/class-use/LoggerContextFactory.html
index 0ab00f52c2..88f2d970a1 100644
--- a/javadoc/log4j-api/org/apache/logging/log4j/spi/class-use/LoggerContextFactory.html
+++ b/javadoc/log4j-api/org/apache/logging/log4j/spi/class-use/LoggerContextFactory.html
@@ -131,7 +131,7 @@ loadScripts(document, 'script');</script>
 <div class="table-header col-first">Modifier and Type</div>
 <div class="table-header col-second">Method</div>
 <div class="table-header col-last">Description</div>
-<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="../LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;</code></div>
+<div class="col-first even-row-color"><code>@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="../LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;</code></div>
 <div class="col-second even-row-color"><span class="type-name-label">Provider.</span><code><a href="../Provider.html#loadLoggerContextFactory()" class="member-name-link">loadLoggerContextFactory</a>()</code></div>
 <div class="col-last even-row-color">
 <div class="block">Loads the <a href="../LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi"><code>LoggerContextFactory</code></a> class specified by this Provider.</div>
@@ -143,15 +143,15 @@ loadScripts(document, 'script');</script>
 <div class="table-header col-second">Constructor</div>
 <div class="table-header col-last">Description</div>
 <div class="col-first even-row-color"><code>&nbsp;</code></div>
-<div class="col-second even-row-color"><code><a href="../Provider.html#%3Cinit%3E(java.lang.Integer,java.lang.String,java.lang.Class)" class="member-name-link">Provider</a><wbr>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;priority,
+<div class="col-second even-row-color"><code><a href="../Provider.html#%3Cinit%3E(java.lang.Integer,java.lang.String,java.lang.Class)" class="member-name-link">Provider</a><wbr>(@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;priority,
  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;versions,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="../LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;&nbsp;loggerContextFactoryClass)</code></div>
+ @Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="../LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;&nbsp;loggerContextFactoryClass)</code></div>
 <div class="col-last even-row-color">&nbsp;</div>
 <div class="col-first odd-row-color"><code>&nbsp;</code></div>
-<div class="col-second odd-row-color"><code><a href="../Provider.html#%3Cinit%3E(java.lang.Integer,java.lang.String,java.lang.Class,java.lang.Class)" class="member-name-link">Provider</a><wbr>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;priority,
+<div class="col-second odd-row-color"><code><a href="../Provider.html#%3Cinit%3E(java.lang.Integer,java.lang.String,java.lang.Class,java.lang.Class)" class="member-name-link">Provider</a><wbr>(@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;priority,
  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;versions,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="../LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;&nbsp;loggerContextFactoryClass,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="../ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a>&gt;&nbsp;threadContextMapClass)</code></div>
+ @Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="../LoggerContextFactory.html" title="interface in org.apache.logging.log4j.spi">LoggerContextFactory</a>&gt;&nbsp;loggerContextFactoryClass,
+ @Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="../ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a>&gt;&nbsp;threadContextMapClass)</code></div>
 <div class="col-last odd-row-color">&nbsp;</div>
 </div>
 </section>
diff --git a/javadoc/log4j-api/org/apache/logging/log4j/spi/class-use/ThreadContextMap.html b/javadoc/log4j-api/org/apache/logging/log4j/spi/class-use/ThreadContextMap.html
index 6841956dac..13ecf01952 100644
--- a/javadoc/log4j-api/org/apache/logging/log4j/spi/class-use/ThreadContextMap.html
+++ b/javadoc/log4j-api/org/apache/logging/log4j/spi/class-use/ThreadContextMap.html
@@ -98,15 +98,22 @@ loadScripts(document, 'script');</script>
 <div class="col-first even-row-color"><code>class&nbsp;</code></div>
 <div class="col-second even-row-color"><code><a href="../DefaultThreadContextMap.html" class="type-name-link" title="class in org.apache.logging.log4j.spi">DefaultThreadContextMap</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">The actual ThreadContext Map.</div>
+<div class="block">The default implementation of <a href="../ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a></div>
 </div>
 <div class="col-first odd-row-color"><code>class&nbsp;</code></div>
 <div class="col-second odd-row-color"><code><a href="../NoOpThreadContextMap.html" class="type-name-link" title="class in org.apache.logging.log4j.spi">NoOpThreadContextMap</a></code></div>
 <div class="col-last odd-row-color">
-<div class="block"><span class="deprecated-label">Deprecated.</span>
-<div class="deprecation-comment">since 2.24.0.</div>
+<div class="block"><code>ThreadContextMap</code> implementation used when either of system properties <code>disableThreadContextMap</code> or .</div>
 </div>
 </div>
+<div class="caption"><span>Fields in <a href="../package-summary.html">org.apache.logging.log4j.spi</a> declared as <a href="../ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a></span></div>
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Field</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color"><code>static final <a href="../ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a></code></div>
+<div class="col-second even-row-color"><span class="type-name-label">NoOpThreadContextMap.</span><code><a href="../NoOpThreadContextMap.html#INSTANCE" class="member-name-link">INSTANCE</a></code></div>
+<div class="col-last even-row-color">&nbsp;</div>
 </div>
 <div class="caption"><span>Methods in <a href="../package-summary.html">org.apache.logging.log4j.spi</a> that return <a href="../ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a></span></div>
 <div class="summary-table three-column-summary">
@@ -125,7 +132,7 @@ loadScripts(document, 'script');</script>
 <div class="table-header col-first">Modifier and Type</div>
 <div class="table-header col-second">Method</div>
 <div class="table-header col-last">Description</div>
-<div class="col-first even-row-color"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="../ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a>&gt;</code></div>
+<div class="col-first even-row-color"><code>@Nullable <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html" title="class or interface in java.lang" class="external-link">Class</a>&lt;? extends <a href="../ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ThreadContextMap</a>&gt;</code></div>
 <div class="col-second even-row-color"><span class="type-name-label">Provider.</span><code><a href="../Provider.html#loadThreadContextMap()" class="member-name-link">loadThreadContextMap</a>()</code></div>
 <div class="col-last even-row-color">
 <div class="block">Loads the <a href="../ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a> class specified by this Provider.</div>
diff --git a/javadoc/log4j-api/org/apache/logging/log4j/spi/package-summary.html b/javadoc/log4j-api/org/apache/logging/log4j/spi/package-summary.html
index 40ef658467..baad7b9cac 100644
--- a/javadoc/log4j-api/org/apache/logging/log4j/spi/package-summary.html
+++ b/javadoc/log4j-api/org/apache/logging/log4j/spi/package-summary.html
@@ -123,12 +123,12 @@ loadScripts(document, 'script');</script>
  <a href="../ThreadContext.html" title="class in org.apache.logging.log4j"><code>ThreadContext</code></a>.</div>
 </div>
 <div class="col-first odd-row-color class-summary class-summary-tab1"><a href="CopyOnWrite.html" title="interface in org.apache.logging.log4j.spi">CopyOnWrite</a></div>
-<div class="col-last odd-row-color class-summary class-summary-tab1">
-<div class="block">Marker interface indicating that the implementing class is a copy-on-write data structure.</div>
+<div class="col-last odd-row-color class-summary class-summary-tab1">Deprecated.
+<div class="deprecation-comment">Since 2.24.0 no class implements this.</div>
 </div>
 <div class="col-first even-row-color class-summary class-summary-tab2"><a href="DefaultThreadContextMap.html" title="class in org.apache.logging.log4j.spi">DefaultThreadContextMap</a></div>
 <div class="col-last even-row-color class-summary class-summary-tab2">
-<div class="block">The actual ThreadContext Map.</div>
+<div class="block">The default implementation of <a href="ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a></div>
 </div>
 <div class="col-first odd-row-color class-summary class-summary-tab2"><a href="DefaultThreadContextStack.html" title="class in org.apache.logging.log4j.spi">DefaultThreadContextStack</a></div>
 <div class="col-last odd-row-color class-summary class-summary-tab2">
@@ -198,8 +198,8 @@ loadScripts(document, 'script');</script>
 <div class="block">TODO</div>
 </div>
 <div class="col-first odd-row-color class-summary class-summary-tab2"><a href="NoOpThreadContextMap.html" title="class in org.apache.logging.log4j.spi">NoOpThreadContextMap</a></div>
-<div class="col-last odd-row-color class-summary class-summary-tab2">Deprecated.
-<div class="deprecation-comment">since 2.24.0.</div>
+<div class="col-last odd-row-color class-summary class-summary-tab2">
+<div class="block"><code>ThreadContextMap</code> implementation used when either of system properties <code>disableThreadContextMap</code> or .</div>
 </div>
 <div class="col-first even-row-color class-summary class-summary-tab1"><a href="ObjectThreadContextMap.html" title="interface in org.apache.logging.log4j.spi">ObjectThreadContextMap</a></div>
 <div class="col-last even-row-color class-summary class-summary-tab1">
diff --git a/javadoc/log4j-api/org/apache/logging/log4j/util/class-use/ReadOnlyStringMap.html b/javadoc/log4j-api/org/apache/logging/log4j/util/class-use/ReadOnlyStringMap.html
index f5959a8f2d..72b1d12cef 100644
--- a/javadoc/log4j-api/org/apache/logging/log4j/util/class-use/ReadOnlyStringMap.html
+++ b/javadoc/log4j-api/org/apache/logging/log4j/util/class-use/ReadOnlyStringMap.html
@@ -78,7 +78,7 @@ loadScripts(document, 'script');</script>
 <div class="col-first even-row-color"><code>class&nbsp;</code></div>
 <div class="col-second even-row-color"><code><a href="../../spi/DefaultThreadContextMap.html" class="type-name-link" title="class in org.apache.logging.log4j.spi">DefaultThreadContextMap</a></code></div>
 <div class="col-last even-row-color">
-<div class="block">The actual ThreadContext Map.</div>
+<div class="block">The default implementation of <a href="../../spi/ThreadContextMap.html" title="interface in org.apache.logging.log4j.spi"><code>ThreadContextMap</code></a></div>
 </div>
 </div>
 </section>
diff --git a/javadoc/log4j-api/serialized-form.html b/javadoc/log4j-api/serialized-form.html
index 17c7359558..aeb37d87cd 100644
--- a/javadoc/log4j-api/serialized-form.html
+++ b/javadoc/log4j-api/serialized-form.html
@@ -1100,7 +1100,7 @@ loadScripts(document, 'script');</script>
 <div class="type-signature">class DefaultThreadContextMap extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
 <dl class="name-value">
 <dt>serialVersionUID:</dt>
-<dd>8218007901108944053L</dd>
+<dd>-2635197170958057849L</dd>
 </dl>
 <ul class="block-list">
 <li>
@@ -1108,12 +1108,8 @@ loadScripts(document, 'script');</script>
 <h4>Serialized Fields</h4>
 <ul class="block-list">
 <li class="block-list">
-<h5>localMap</h5>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html" title="class or interface in java.lang" class="external-link">ThreadLocal</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>,<wbr><a href="https://docs.oracle.co [...]
-</li>
-<li class="block-list">
-<h5>useMap</h5>
-<pre>boolean useMap</pre>
+<h5>localState</h5>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ThreadLocal.html" title="class or interface in java.lang" class="external-link">ThreadLocal</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>[]&gt; localState</pre>
 </li>
 </ul>
 </section>
diff --git a/javadoc/log4j-core/index-all.html b/javadoc/log4j-core/index-all.html
index 0c18096801..d95f9c5f90 100644
--- a/javadoc/log4j-core/index-all.html
+++ b/javadoc/log4j-core/index-all.html
@@ -7694,6 +7694,8 @@ loadScripts(document, 'script');</script>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/core/LoggerContextAccessor.html#getLoggerContext()" class="member-name-link">getLoggerContext()</a> - Method in interface org.apache.logging.log4j.core.<a href="org/apache/logging/log4j/core/LoggerContextAccessor.html" title="interface in org.apache.logging.log4j.core">LoggerContextAccessor</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/logging/log4j/core/impl/Log4jProvider.html#getLoggerContextFactory()" class="member-name-link">getLoggerContextFactory()</a> - Method in class org.apache.logging.log4j.core.impl.<a href="org/apache/logging/log4j/core/impl/Log4jProvider.html" title="class in org.apache.logging.log4j.core.impl">Log4jProvider</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/core/async/BasicAsyncLoggerContextSelector.html#getLoggerContexts()" class="member-name-link">getLoggerContexts()</a> - Method in class org.apache.logging.log4j.core.async.<a href="org/apache/logging/log4j/core/async/BasicAsyncLoggerContextSelector.html" title="class in org.apache.logging.log4j.core.async">BasicAsyncLoggerContextSelector</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/core/selector/BasicContextSelector.html#getLoggerContexts()" class="member-name-link">getLoggerContexts()</a> - Method in class org.apache.logging.log4j.core.selector.<a href="org/apache/logging/log4j/core/selector/BasicContextSelector.html" title="class in org.apache.logging.log4j.core.selector">BasicContextSelector</a></dt>
@@ -8861,6 +8863,8 @@ loadScripts(document, 'script');</script>
 <div class="block">Returns the ClassLoader of current thread if possible, or falls back to the system ClassLoader if none is
  available.</div>
 </dd>
+<dt><a href="org/apache/logging/log4j/core/impl/Log4jProvider.html#getThreadContextMapInstance()" class="member-name-link">getThreadContextMapInstance()</a> - Method in class org.apache.logging.log4j.core.impl.<a href="org/apache/logging/log4j/core/impl/Log4jProvider.html" title="class in org.apache.logging.log4j.core.impl">Log4jProvider</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/core/AbstractLogEvent.html#getThreadId()" class="member-name-link">getThreadId()</a> - Method in class org.apache.logging.log4j.core.<a href="org/apache/logging/log4j/core/AbstractLogEvent.html" title="class in org.apache.logging.log4j.core">AbstractLogEvent</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/logging/log4j/core/async/RingBufferLogEvent.html#getThreadId()" class="member-name-link">getThreadId()</a> - Method in class org.apache.logging.log4j.core.async.<a href="org/apache/logging/log4j/core/async/RingBufferLogEvent.html" title="class in org.apache.logging.log4j.core.async">RingBufferLogEvent</a></dt>
diff --git a/javadoc/log4j-core/member-search-index.js b/javadoc/log4j-core/member-search-index.js
index e2dfe66067..c0f88176f1 100644
--- a/javadoc/log4j-core/member-search-index.js
+++ b/javadoc/log4j-core/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex = [{"p":"org.apache.logging.log4j.core.pattern","c":"NameAbbreviator","l":"abbreviate(String, StringBuilder)","u":"abbreviate(java.lang.String,java.lang.StringBuilder)"},{"p":"org.apache.logging.log4j.core.pattern","c":"NamePatternConverter","l":"abbreviate(String, StringBuilder)","u":"abbreviate(java.lang.String,java.lang.StringBuilder)"},{"p":"org.apache.logging.log4j.core.util.datetime","c":"FixedDateFormat.FixedFormat","l":"ABSOLUTE"},{"p":"org.apache.logging.log4j. [...]
\ No newline at end of file
+memberSearchIndex = [{"p":"org.apache.logging.log4j.core.pattern","c":"NameAbbreviator","l":"abbreviate(String, StringBuilder)","u":"abbreviate(java.lang.String,java.lang.StringBuilder)"},{"p":"org.apache.logging.log4j.core.pattern","c":"NamePatternConverter","l":"abbreviate(String, StringBuilder)","u":"abbreviate(java.lang.String,java.lang.StringBuilder)"},{"p":"org.apache.logging.log4j.core.util.datetime","c":"FixedDateFormat.FixedFormat","l":"ABSOLUTE"},{"p":"org.apache.logging.log4j. [...]
\ No newline at end of file
diff --git a/javadoc/log4j-core/org/apache/logging/log4j/core/impl/Log4jProvider.html b/javadoc/log4j-core/org/apache/logging/log4j/core/impl/Log4jProvider.html
index 1dc9694f25..a0087c65eb 100644
--- a/javadoc/log4j-core/org/apache/logging/log4j/core/impl/Log4jProvider.html
+++ b/javadoc/log4j-core/org/apache/logging/log4j/core/impl/Log4jProvider.html
@@ -15,7 +15,11 @@
 <script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
 </head>
 <body class="class-declaration-page">
-<script type="text/javascript">var pathtoroot = "../../../../../../";
+<script type="text/javascript">var evenRowColor = "even-row-color";
+var oddRowColor = "odd-row-color";
+var tableTab = "table-tab";
+var activeTableTab = "active-table-tab";
+var pathtoroot = "../../../../../../";
 loadScripts(document, 'script');</script>
 <noscript>
 <div>JavaScript is disabled on your browser.</div>
@@ -50,7 +54,7 @@ loadScripts(document, 'script');</script>
 <li>Detail:&nbsp;</li>
 <li>Field&nbsp;|&nbsp;</li>
 <li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
-<li>Method</li>
+<li><a href="#method-detail">Method</a></li>
 </ul>
 </div>
 <div class="nav-list-search"><label for="search-input">SEARCH:</label>
@@ -75,7 +79,8 @@ loadScripts(document, 'script');</script>
 </div>
 <section class="class-description" id="class-description">
 <hr>
-<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">Log4jProvider</span>
+<div class="type-signature"><span class="annotations">@NullMarked
+</span><span class="modifiers">public class </span><span class="element-name type-name-label">Log4jProvider</span>
 <span class="extends-implements">extends <a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html" title="class or interface in org.apache.logging.log4j.spi" class="external-link">Provider</a></span></div>
 <div class="block">Binding for the Log4j API.</div>
 </section>
@@ -87,7 +92,7 @@ loadScripts(document, 'script');</script>
 <h2>Field Summary</h2>
 <div class="inherited-list">
 <h3 id="fields-inherited-from-class-org.apache.logging.log4j.spi.Provider">Fields inherited from class&nbsp;org.apache.logging.log4j.spi.<a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html" title="class or interface in org.apache.logging.log4j.spi" class="external-link">Provider</a></h3>
-<code><a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html#COPY_ON_WRITE_CONTEXT_MAP" title="class or interface in org.apache.logging.log4j.spi" class="external-link">COPY_ON_WRITE_CONTEXT_MAP</a>, <a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html#CURRENT_VERSION" title="class or interface in org.apache.logging.log4j.spi" class="external-link">CURRENT_VERSION</a>, <a href="https [...]
+<code><a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html#CURRENT_VERSION" title="class or interface in org.apache.logging.log4j.spi" class="external-link">CURRENT_VERSION</a>, <a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html#FACTORY_PRIORITY" title="class or interface in org.apache.logging.log4j.spi" class="external-link">FACTORY_PRIORITY</a>, <a href="https://logging.apache. [...]
 </section>
 </li>
 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
@@ -107,9 +112,25 @@ loadScripts(document, 'script');</script>
 <li>
 <section class="method-summary" id="method-summary">
 <h2>Method Summary</h2>
+<div id="method-summary-table">
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab( [...]
+<div id="method-summary-table.tabpanel" role="tabpanel" aria-labelledby="method-summary-table-tab0">
+<div class="summary-table three-column-summary">
+<div class="table-header col-first">Modifier and Type</div>
+<div class="table-header col-second">Method</div>
+<div class="table-header col-last">Description</div>
+<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/LoggerContextFactory.html" title="class or interface in org.apache.logging.log4j.spi" class="external-link">LoggerContextFactory</a></code></div>
+<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getLoggerContextFactory()" class="member-name-link">getLoggerContextFactory</a>()</code></div>
+<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/ThreadContextMap.html" title="class or interface in org.apache.logging.log4j.spi" class="external-link">ThreadContextMap</a></code></div>
+<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getThreadContextMapInstance()" class="member-name-link">getThreadContextMapInstance</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
+</div>
+</div>
+</div>
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-org.apache.logging.log4j.spi.Provider">Methods inherited from class&nbsp;org.apache.logging.log4j.spi.<a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html" title="class or interface in org.apache.logging.log4j.spi" class="external-link">Provider</a></h3>
-<code><a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html#equals(java.lang.Object)" title="class or interface in org.apache.logging.log4j.spi" class="external-link">equals</a>, <a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html#getClassName()" title="class or interface in org.apache.logging.log4j.spi" class="external-link">getClassName</a>, <a href="https://logging.apache.org/lo [...]
+<code><a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html#equals(java.lang.Object)" title="class or interface in org.apache.logging.log4j.spi" class="external-link">equals</a>, <a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html#getClassName()" title="class or interface in org.apache.logging.log4j.spi" class="external-link">getClassName</a>, <a href="https://logging.apache.org/lo [...]
 <div class="inherited-list">
 <h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
 <code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#clone--" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#finalize--" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--" title="class or interface in java.lang" class="external-link">getClass</a>, <a href=" [...]
@@ -133,6 +154,34 @@ loadScripts(document, 'script');</script>
 </ul>
 </section>
 </li>
+<!-- ============ METHOD DETAIL ========== -->
+<li>
+<section class="method-details" id="method-detail">
+<h2>Method Details</h2>
+<ul class="member-list">
+<li>
+<section class="detail" id="getLoggerContextFactory()">
+<h3>getLoggerContextFactory</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/LoggerContextFactory.html" title="class or interface in org.apache.logging.log4j.spi" class="external-link">LoggerContextFactory</a></span>&nbsp;<span class="element-name">getLoggerContextFactory</span>()</div>
+<dl class="notes">
+<dt>Overrides:</dt>
+<dd><code><a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html#getLoggerContextFactory()" title="class or interface in org.apache.logging.log4j.spi" class="external-link">getLoggerContextFactory</a></code>&nbsp;in class&nbsp;<code><a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html" title="class or interface in org.apache.logging.log4j.spi" class="external-link">Provider</a></code></dd>
+</dl>
+</section>
+</li>
+<li>
+<section class="detail" id="getThreadContextMapInstance()">
+<h3>getThreadContextMapInstance</h3>
+<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/ThreadContextMap.html" title="class or interface in org.apache.logging.log4j.spi" class="external-link">ThreadContextMap</a></span>&nbsp;<span class="element-name">getThreadContextMapInstance</span>()</div>
+<dl class="notes">
+<dt>Overrides:</dt>
+<dd><code><a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html#getThreadContextMapInstance()" title="class or interface in org.apache.logging.log4j.spi" class="external-link">getThreadContextMapInstance</a></code>&nbsp;in class&nbsp;<code><a href="https://logging.apache.org/log4j/2.x/javadoc/log4j-api/org/apache/logging/log4j/spi/Provider.html" title="class or interface in org.apache.logging.log4j.spi" class="external-link">Provider</ [...]
+</dl>
+</section>
+</li>
+</ul>
+</section>
+</li>
 </ul>
 </section>
 <!-- ========= END OF CLASS DATA ========= -->
diff --git a/manual/garbagefree.html b/manual/garbagefree.html
index 40675533ad..5ddfa443cd 100644
--- a/manual/garbagefree.html
+++ b/manual/garbagefree.html
@@ -773,15 +773,14 @@ or predefined constant</p></td>
 </tr>
 <tr>
 <th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>WebApp</code></p>
-<p class="tableblock">(GC-free mode: <code>CopyOnWrite</code>)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>WebApp</code></p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
 <p>Fully specified class name of a custom
 <a href="../javadoc/log4j-api/org/apache/logging/log4j/spi/ThreadContextMap.html"><code>ThreadContextMap</code></a>
-implementation class or one of the predefined constants:</p>
+implementation class or (since version <code>2.24.0</code>) one of the predefined constants:</p>
 </div>
 <div class="dlist">
 <dl>
@@ -793,10 +792,6 @@ implementation class or one of the predefined constants:</p>
 <dd>
 <p>a web application-safe implementation, that only binds JRE classes to <code>ThreadLocal</code> to prevent memory leaks,</p>
 </dd>
-<dt class="hdlist1">CopyOnWrite</dt>
-<dd>
-<p>a copy-on-write implementation,</p>
-</dd>
 <dt class="hdlist1">GarbageFree</dt>
 <dd>
 <p>a garbage-free implementation.</p>
diff --git a/manual/simple-logger.html b/manual/simple-logger.html
index 3380edc56e..5d5eaae280 100644
--- a/manual/simple-logger.html
+++ b/manual/simple-logger.html
@@ -362,11 +362,13 @@ This is a convenience for environments where either a fully-fledged logging impl
 <div class="sect1">
 <h2 id="config"><a class="anchor" href="#config"></a>Configuration</h2>
 <div class="sectionbody">
+<div class="sect2">
+<h3 id="logger"><a class="anchor" href="#logger"></a>Logger</h3>
 <div class="paragraph">
 <p><code>SimpleLogger</code> can be configured using the following system properties:</p>
 </div>
-<div class="sect2">
-<h3 id="log4j2.simplelogLevel"><a class="anchor" href="#log4j2.simplelogLevel"></a><code>log4j2.simplelogLevel</code></h3>
+<div class="sect3">
+<h4 id="log4j2.simplelogLevel"><a class="anchor" href="#log4j2.simplelogLevel"></a><code>log4j2.simplelogLevel</code></h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 16.6666%;">
@@ -391,8 +393,8 @@ This is a convenience for environments where either a fully-fledged logging impl
 <p>Default level for new logger instances.</p>
 </div>
 </div>
-<div class="sect2">
-<h3 id="log4j2.simplelog.loggerName.level"><a class="anchor" href="#log4j2.simplelog.loggerName.level"></a><code>log4j2.simplelog.&lt;loggerName&gt;.level</code></h3>
+<div class="sect3">
+<h4 id="log4j2.simplelog.loggerName.level"><a class="anchor" href="#log4j2.simplelog.loggerName.level"></a><code>log4j2.simplelog.&lt;loggerName&gt;.level</code></h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 16.6666%;">
@@ -417,8 +419,8 @@ This is a convenience for environments where either a fully-fledged logging impl
 <p>Log level for a logger instance named <code>&lt;loggerName&gt;</code>.</p>
 </div>
 </div>
-<div class="sect2">
-<h3 id="log4j2.simplelogShowContextMap"><a class="anchor" href="#log4j2.simplelogShowContextMap"></a><code>log4j2.simplelogShowContextMap</code></h3>
+<div class="sect3">
+<h4 id="log4j2.simplelogShowContextMap"><a class="anchor" href="#log4j2.simplelogShowContextMap"></a><code>log4j2.simplelogShowContextMap</code></h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 16.6666%;">
@@ -443,8 +445,8 @@ This is a convenience for environments where either a fully-fledged logging impl
 <p>If <code>true</code>, the full thread context map is included in each log message.</p>
 </div>
 </div>
-<div class="sect2">
-<h3 id="log4j2.simplelogShowlogname"><a class="anchor" href="#log4j2.simplelogShowlogname"></a><code>log4j2.simplelogShowlogname</code></h3>
+<div class="sect3">
+<h4 id="log4j2.simplelogShowlogname"><a class="anchor" href="#log4j2.simplelogShowlogname"></a><code>log4j2.simplelogShowlogname</code></h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 16.6666%;">
@@ -469,8 +471,8 @@ This is a convenience for environments where either a fully-fledged logging impl
 <p>If <code>true</code>, the logger name is included in each log message.</p>
 </div>
 </div>
-<div class="sect2">
-<h3 id="log4j2.simplelogShowShortLogname"><a class="anchor" href="#log4j2.simplelogShowShortLogname"></a><code>log4j2.simplelogShowShortLogname</code></h3>
+<div class="sect3">
+<h4 id="log4j2.simplelogShowShortLogname"><a class="anchor" href="#log4j2.simplelogShowShortLogname"></a><code>log4j2.simplelogShowShortLogname</code></h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 16.6666%;">
@@ -495,8 +497,8 @@ This is a convenience for environments where either a fully-fledged logging impl
 <p>If <code>true</code>, only the last component of a logger name is included in each log message.</p>
 </div>
 </div>
-<div class="sect2">
-<h3 id="log4j2.simplelogShowdatetime"><a class="anchor" href="#log4j2.simplelogShowdatetime"></a><code>log4j2.simplelogShowdatetime</code></h3>
+<div class="sect3">
+<h4 id="log4j2.simplelogShowdatetime"><a class="anchor" href="#log4j2.simplelogShowdatetime"></a><code>log4j2.simplelogShowdatetime</code></h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 16.6666%;">
@@ -521,8 +523,8 @@ This is a convenience for environments where either a fully-fledged logging impl
 <p>If <code>true</code>, a timestamp is included in each log message.</p>
 </div>
 </div>
-<div class="sect2">
-<h3 id="log4j2.simplelogDateTimeFormat"><a class="anchor" href="#log4j2.simplelogDateTimeFormat"></a><code>log4j2.simplelogDateTimeFormat</code></h3>
+<div class="sect3">
+<h4 id="log4j2.simplelogDateTimeFormat"><a class="anchor" href="#log4j2.simplelogDateTimeFormat"></a><code>log4j2.simplelogDateTimeFormat</code></h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 16.6666%;">
@@ -548,8 +550,8 @@ This is a convenience for environments where either a fully-fledged logging impl
 Ignored if <a href="#log4j2.simplelogShowdatetime"><code>log4j2.simplelogShowdatetime</code></a> is <code>false</code>.</p>
 </div>
 </div>
-<div class="sect2">
-<h3 id="log4j2.simplelogLogFile"><a class="anchor" href="#log4j2.simplelogLogFile"></a><code>log4j2.simplelogLogFile</code></h3>
+<div class="sect3">
+<h4 id="log4j2.simplelogLogFile"><a class="anchor" href="#log4j2.simplelogLogFile"></a><code>log4j2.simplelogLogFile</code></h4>
 <table class="tableblock frame-all grid-all stretch">
 <colgroup>
 <col style="width: 16.6666%;">
@@ -589,11 +591,148 @@ Ignored if <a href="#log4j2.simplelogShowdatetime"><code>log4j2.simplelogShowdat
 </dl>
 </div>
 </div>
+</div>
 <div class="sect2">
-<h3 id="_thread_context"><a class="anchor" href="#_thread_context"></a>Thread context</h3>
+<h3 id="thread-context"><a class="anchor" href="#thread-context"></a>Thread context</h3>
+<div class="paragraph">
+<p>For the configuration of the thread context,
+Simple Logger supports a subset of the properties supported by Log4j Core:</p>
+</div>
+<div class="sect3">
+<h4 id="log4j2.disableThreadContext"><a class="anchor" href="#log4j2.disableThreadContext"></a><code>log4j2.disableThreadContext</code></h4>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Env. variable</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>LOG4J_DISABLE_THREAD_CONTEXT</code></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>boolean</code></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>If <code>true</code>, the <code>ThreadContext</code> stack and map are disabled.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="log4j2.disableThreadContextStack"><a class="anchor" href="#log4j2.disableThreadContextStack"></a><code>log4j2.disableThreadContextStack</code></h4>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Env. variable</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>LOG4J_DISABLE_THREAD_CONTEXT_STACK</code></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>boolean</code></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>If <code>true</code>, the <code>ThreadContext</code> stack is disabled.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="log4j2.disableThreadContextMap"><a class="anchor" href="#log4j2.disableThreadContextMap"></a><code>log4j2.disableThreadContextMap</code></h4>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Env. variable</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>LOG4J_DISABLE_THREAD_CONTEXT_MAP</code></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>boolean</code></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>If <code>true</code>, the <code>ThreadContext</code> map is disabled.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="log4j2.threadContextMap"><a class="anchor" href="#log4j2.threadContextMap"></a><code>log4j2.threadContextMap</code></h4>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Env. variable</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>LOG4J_THREAD_CONTEXT_MAP</code></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="../javadoc/log4j-api/org/apache/logging/log4j/spi/ThreadContextMap.html"><code>Class&lt;? extends ThreadContextMap&gt;</code></a></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="../javadoc/log4j-api/org/apache/logging/log4j/spi/DefaultThreadContextMap.html"><code>DefaultThreadContextMap</code></a></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>Fully specified class name of a custom
+<a href="../javadoc/log4j-api/org/apache/logging/log4j/spi/ThreadContextMap.html"><code>ThreadContextMap</code></a>
+implementation class.</p>
+</div>
+</div>
+<div class="sect3">
+<h4 id="isThreadContextMapInheritable"><a class="anchor" href="#isThreadContextMapInheritable"></a><code>log4j2.isThreadContextMapInheritable</code></h4>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 83.3334%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Env. variable</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>LOG4J_IS_THREAD_CONTEXT_MAP_INHERITABLE</code></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>boolean</code></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
+</tr>
+</tbody>
+</table>
 <div class="paragraph">
-<p>Simple Logger supports the same properties as Log4j Core for the configuration of the thread context.
-See <a href="systemproperties.html#properties-thread-context" class="xref page">manual/systemproperties.adoc#properties-thread-context</a> for details.</p>
+<p>If <code>true</code> uses an <code>InheritableThreadLocal</code> to copy the thread context map to newly created threads.</p>
+</div>
+<div class="paragraph">
+<p>Note that, as explained in
+<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executors.html#privilegedThreadFactory()">Java&#8217;s <code>Executors#privilegedThreadFactory()</code></a>, when you are dealing with <em>privileged threads</em>, thread context might not get propagated completely.</p>
+</div>
 </div>
 </div>
 </div>
diff --git a/manual/systemproperties.html b/manual/systemproperties.html
index 04648b1993..a05a426d42 100644
--- a/manual/systemproperties.html
+++ b/manual/systemproperties.html
@@ -2084,15 +2084,14 @@ or predefined constant</p></td>
 </tr>
 <tr>
 <th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>WebApp</code></p>
-<p class="tableblock">(GC-free mode: <code>CopyOnWrite</code>)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>WebApp</code></p></td>
 </tr>
 </tbody>
 </table>
 <div class="paragraph">
 <p>Fully specified class name of a custom
 <a href="../javadoc/log4j-api/org/apache/logging/log4j/spi/ThreadContextMap.html"><code>ThreadContextMap</code></a>
-implementation class or one of the predefined constants:</p>
+implementation class or (since version <code>2.24.0</code>) one of the predefined constants:</p>
 </div>
 <div class="dlist">
 <dl>
@@ -2104,10 +2103,6 @@ implementation class or one of the predefined constants:</p>
 <dd>
 <p>a web application-safe implementation, that only binds JRE classes to <code>ThreadLocal</code> to prevent memory leaks,</p>
 </dd>
-<dt class="hdlist1">CopyOnWrite</dt>
-<dd>
-<p>a copy-on-write implementation,</p>
-</dd>
 <dt class="hdlist1">GarbageFree</dt>
 <dd>
 <p>a garbage-free implementation.</p>
diff --git a/manual/thread-context.html b/manual/thread-context.html
index 39f6d682f8..77dc34407c 100644
--- a/manual/thread-context.html
+++ b/manual/thread-context.html
@@ -509,187 +509,37 @@ executor.submit(() -&gt; {
 <h2 id="config"><a class="anchor" href="#config"></a>Configuration</h2>
 <div class="sectionbody">
 <div class="paragraph">
-<p>You can configure thread context using following properties:</p>
-</div>
-<div class="sect2">
-<h3 id="log4j2.disableThreadContext"><a class="anchor" href="#log4j2.disableThreadContext"></a><code>log4j2.disableThreadContext</code></h3>
-<table class="tableblock frame-all grid-all stretch">
-<colgroup>
-<col style="width: 16.6666%;">
-<col style="width: 83.3334%;">
-</colgroup>
-<tbody>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Env. variable</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>LOG4J_DISABLE_THREAD_CONTEXT</code></p></td>
-</tr>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>boolean</code></p></td>
-</tr>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
-</tr>
-</tbody>
-</table>
-<div class="paragraph">
-<p>If <code>true</code>, the <code>ThreadContext</code> stack and map are disabled.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="log4j2.disableThreadContextStack"><a class="anchor" href="#log4j2.disableThreadContextStack"></a><code>log4j2.disableThreadContextStack</code></h3>
-<table class="tableblock frame-all grid-all stretch">
-<colgroup>
-<col style="width: 16.6666%;">
-<col style="width: 83.3334%;">
-</colgroup>
-<tbody>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Env. variable</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>LOG4J_DISABLE_THREAD_CONTEXT_STACK</code></p></td>
-</tr>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>boolean</code></p></td>
-</tr>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
-</tr>
-</tbody>
-</table>
-<div class="paragraph">
-<p>If <code>true</code>, the <code>ThreadContext</code> stack is disabled.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="log4j2.disableThreadContextMap"><a class="anchor" href="#log4j2.disableThreadContextMap"></a><code>log4j2.disableThreadContextMap</code></h3>
-<table class="tableblock frame-all grid-all stretch">
-<colgroup>
-<col style="width: 16.6666%;">
-<col style="width: 83.3334%;">
-</colgroup>
-<tbody>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Env. variable</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>LOG4J_DISABLE_THREAD_CONTEXT_MAP</code></p></td>
-</tr>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>boolean</code></p></td>
-</tr>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
-</tr>
-</tbody>
-</table>
-<div class="paragraph">
-<p>If <code>true</code>, the <code>ThreadContext</code> map is disabled.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="log4j2.threadContextMap"><a class="anchor" href="#log4j2.threadContextMap"></a><code>log4j2.threadContextMap</code></h3>
-<table class="tableblock frame-all grid-all stretch">
-<colgroup>
-<col style="width: 16.6666%;">
-<col style="width: 83.3334%;">
-</colgroup>
-<tbody>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Env. variable</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>LOG4J_THREAD_CONTEXT_MAP</code></p></td>
-</tr>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="../javadoc/log4j-api/org/apache/logging/log4j/spi/ThreadContextMap.html"><code>Class&lt;? extends ThreadContextMap&gt;</code></a>
-or predefined constant</p></td>
-</tr>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>WebApp</code></p>
-<p class="tableblock">(GC-free mode: <code>CopyOnWrite</code>)</p></td>
-</tr>
-</tbody>
-</table>
-<div class="paragraph">
-<p>Fully specified class name of a custom
-<a href="../javadoc/log4j-api/org/apache/logging/log4j/spi/ThreadContextMap.html"><code>ThreadContextMap</code></a>
-implementation class or one of the predefined constants:</p>
+<p>Since the thread context is inherently linked to the logging implementation, its configuration options depend on the logging implementation used:</p>
 </div>
 <div class="dlist">
 <dl>
-<dt class="hdlist1">NoOp</dt>
-<dd>
-<p>to disable the thread context,</p>
-</dd>
-<dt class="hdlist1">WebApp</dt>
-<dd>
-<p>a web application-safe implementation, that only binds JRE classes to <code>ThreadLocal</code> to prevent memory leaks,</p>
-</dd>
-<dt class="hdlist1">CopyOnWrite</dt>
+<dt class="hdlist1">Simple Logger</dt>
 <dd>
-<p>a copy-on-write implementation,</p>
+<div class="paragraph">
+<p>See <a href="simple-logger.html#thread-context" class="xref page">Thread context configuration of Simple Logger</a>.</p>
+</div>
 </dd>
-<dt class="hdlist1">GarbageFree</dt>
+<dt class="hdlist1">Log4j Core</dt>
 <dd>
-<p>a garbage-free implementation.</p>
-</dd>
-</dl>
-</div>
-</div>
-<div class="sect2">
-<h3 id="isThreadContextMapInheritable"><a class="anchor" href="#isThreadContextMapInheritable"></a><code>log4j2.isThreadContextMapInheritable</code></h3>
-<table class="tableblock frame-all grid-all stretch">
-<colgroup>
-<col style="width: 16.6666%;">
-<col style="width: 83.3334%;">
-</colgroup>
-<tbody>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Env. variable</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>LOG4J_IS_THREAD_CONTEXT_MAP_INHERITABLE</code></p></td>
-</tr>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Type</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>boolean</code></p></td>
-</tr>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
-</tr>
-</tbody>
-</table>
 <div class="paragraph">
-<p>If <code>true</code> uses an <code>InheritableThreadLocal</code> to copy the thread context map to newly created threads.</p>
+<p>See <a href="systemproperties.html#properties-thread-context" class="xref page">Thread context configuration of Log4j Core</a>.</p>
 </div>
+</dd>
+<dt class="hdlist1">Log4j API to SLF4J bridge</dt>
+<dd>
 <div class="paragraph">
-<p>Note that, as explained in
-<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executors.html#privilegedThreadFactory()">Java&#8217;s <code>Executors#privilegedThreadFactory()</code></a>, when you are dealing with <em>privileged threads</em>, thread context might not get propagated completely.</p>
+<p>All <code>ThreadContext</code> method calls are translated into equivalent
+<a href="https://www.slf4j.org/api/org/slf4j/MDC.html"><code>org.slf4j.MDC</code></a>
+method calls.</p>
 </div>
-</div>
-<div class="sect2">
-<h3 id="log4j2.garbagefreeThreadContextMap"><a class="anchor" href="#log4j2.garbagefreeThreadContextMap"></a><code>log4j2.garbagefreeThreadContextMap</code></h3>
-<table class="tableblock frame-all grid-all stretch">
-<colgroup>
-<col style="width: 16.6666%;">
-<col style="width: 83.3334%;">
-</colgroup>
-<tbody>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Env. variable</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>LOG4J_GARBAGEFREE_THREAD_CONTEXT_MAP</code></p></td>
-</tr>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Default value</p></th>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>false</code></p></td>
-</tr>
-</tbody>
-</table>
+</dd>
+<dt class="hdlist1">JUL</dt>
+<dd>
 <div class="paragraph">
-<p>If set to <code>true</code> selects a garbage-free thread context map implementation.</p>
+<p>All <code>ThreadContext</code> method calls are a no-op.</p>
 </div>
+</dd>
+</dl>
 </div>
 </div>
 </div>
diff --git a/plugin-reference.html b/plugin-reference.html
index e672e150ad..bb78cc1814 100644
--- a/plugin-reference.html
+++ b/plugin-reference.html
@@ -1474,7 +1474,7 @@ Originally developed by Ceki Glc and Anders Kristensen.</p>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>header</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>String?</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code>boolean?</code></p></td>
 <td class="tableblock halign-left valign-top"></td>
 <td class="tableblock halign-left valign-top"><div class="content"></div></td>
 </tr>
diff --git a/release-notes.html b/release-notes.html
index 1fca0303bb..ad2a632efb 100644
--- a/release-notes.html
+++ b/release-notes.html
@@ -368,7 +368,7 @@
 <p>Add <code>useFqdn</code> configuration attribute to RFC5424 Layout. (<a href="https://github.com/apache/logging-log4j2/issues/1740">1740</a>)</p>
 </li>
 <li>
-<p>Add a faster <code>ThreadContextMap</code> for web app users: <code>org.apache.logging.log4j.internal.map.StringArrayThreadContextMap</code>. (<a href="https://github.com/apache/logging-log4j2/pull/2330">2330</a>)</p>
+<p>Add a faster <code>DefaultThreadContextMap</code> implementation. (<a href="https://github.com/apache/logging-log4j2/pull/2330">2330</a>)</p>
 </li>
 <li>
 <p>Add Logback throwable-consuming semantics as an option in <code>log4j-slf4j-impl</code> and <code>log4j-slf4j2-impl</code>. Users can enable it by setting the property <code>log4j2.messageFactory</code> to <code>org.apache.logging.slf4j.message.ThrowableConsumingMessageFactory</code>. (<a href="https://github.com/apache/logging-log4j2/issues/2363">2363</a>)</p>
@@ -582,7 +582,7 @@
 <p>Update <code>org.apache.maven:maven-core</code> to version <code>3.9.9</code> (<a href="https://github.com/apache/logging-log4j2/pull/2861">2861</a>)</p>
 </li>
 <li>
-<p>Update <code>org.apache.maven.surefire:surefire-junit47</code> to version <code>3.4.0</code> (<a href="https://github.com/apache/logging-log4j2/pull/2862">2862</a>)</p>
+<p>Update <code>org.apache.maven.surefire:surefire-junit47</code> to version <code>3.5.0</code> (<a href="https://github.com/apache/logging-log4j2/pull/2898">2898</a>)</p>
 </li>
 <li>
 <p>Update <code>org.assertj:assertj-core</code> to version <code>3.26.3</code> (<a href="https://github.com/apache/logging-log4j2/pull/2730">2730</a>)</p>
diff --git a/sitemap.xml b/sitemap.xml
index baaf42f486..711b27bdd1 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -2,234 +2,234 @@
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 <url>
 <loc>https://logging.apache.org/log4j/2.x/components.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/development.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/download.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/faq.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/hibernate.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/index.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/jakarta.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/javadoc.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/log4j-iostreams.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/log4j-jul.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/log4j-spring-boot.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/log4j-spring-cloud-config-client.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/log4j-to-jul.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/api.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/appenders.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/appenders/database.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/appenders/delegating.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/appenders/file.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/appenders/message-queue.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/appenders/network.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/appenders/rolling-file.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/architecture.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/async.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/compatibility.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/config-intro.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/configuration.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/customconfig.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/customloglevels.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/eventlogging.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/extending.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/filters.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/flowtracing.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/garbagefree.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/getting-started.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/implementation.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/index.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/installation.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/jmx.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/json-template-layout.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/layouts.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/logbuilder.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/lookups.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/markers.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/messages.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/pattern-layout.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/performance.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/plugins.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/scripts.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/simple-logger.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/status-logger.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/systemproperties.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/thread-context.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/migrate-from-log4j1.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/migrate-from-logback.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/migrate-from-slf4j.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/plugin-reference.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/release-notes.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/soa.html</loc>
-<lastmod>2024-08-26T19:02:34.449Z</lastmod>
+<lastmod>2024-08-28T13:56:21.384Z</lastmod>
 </url>
 </urlset>