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

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


The following commit(s) were added to refs/heads/main-site-stg-out by this push:
     new a758c7c23f Add website content generated from 
`de60cffac9db967869885318db860452760b149d`
a758c7c23f is described below

commit a758c7c23f8c4cfda62cf72678328a5bd3d3ce46
Author: ASF Logging Services RM <[email protected]>
AuthorDate: Wed Jun 19 15:04:13 2024 +0000

    Add website content generated from 
`de60cffac9db967869885318db860452760b149d`
---
 hibernate.html                   |   4 +-
 manual/api.html                  |   4 +-
 manual/architecture.html         |   4 +-
 manual/async.html                |   2 +-
 manual/garbagefree.html          |   4 +-
 manual/getting-started.html      |   8 +-
 manual/installation.html         |  12 +-
 manual/json-template-layout.html | 254 ++++++++++++++++++++++++++++++++++++---
 manual/layouts.html              |  27 +++--
 manual/lookups.html              |   2 +-
 manual/pattern-layout.html       |  89 +++++++++++---
 manual/systemproperties.html     |  26 +++-
 migrate-from-logback.html        |   6 +-
 migrate-from-slf4j.html          |   6 +-
 plugin-reference.html            |   7 +-
 sitemap.xml                      |  96 +++++++--------
 16 files changed, 427 insertions(+), 124 deletions(-)

diff --git a/hibernate.html b/hibernate.html
index 58d8c3fd03..fa84c870a5 100644
--- a/hibernate.html
+++ b/hibernate.html
@@ -290,7 +290,7 @@ If you have a working <a 
href="manual/installation.html#impl-core" class="xref p
 <p>A logging API is an interface your code or your dependencies directly logs 
against.
 It is required at compile-time.
 It is implementation agnostic to ensure that your application can write logs, 
but is not tied to a specific logging implementation.
-Log4j API, <a href="https://www.slf4j.org/";>SLF4J</a>, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a 
href="https://commons.apache.org/proper/commons-logging/";>JCL (Apache Commons 
Logging)</a>, <a href="https://openjdk.org/jeps/264";>JPL (Java Platform 
Logging)</a> and <a href="https://github.com/jboss-logging/jboss-logging";>JBoss 
Logging</a> are major logging APIs.</p>
+Log4j API, <a href="https://www.slf4j.org";>SLF4J</a>, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a 
href="https://commons.apache.org/proper/commons-logging/";>JCL (Apache Commons 
Logging)</a>, <a href="https://openjdk.org/jeps/264";>JPL (Java Platform 
Logging)</a> and <a href="https://github.com/jboss-logging/jboss-logging";>JBoss 
Logging</a> are major logging APIs.</p>
 </dd>
 </dl>
 </div>
@@ -299,7 +299,7 @@ Log4j API, <a href="https://www.slf4j.org/";>SLF4J</a>, <a 
href="https://docs.ora
 <dt class="hdlist1">Logging implementation</dt>
 <dd>
 <p>A logging implementation is only required at runtime and can be changed 
without the need to recompile your software.
-Log4j Core, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a href="https://logback.qos.ch/";>Logback</a> are the most 
well-known logging implementations.</p>
+Log4j Core, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a href="https://logback.qos.ch";>Logback</a> are the most 
well-known logging implementations.</p>
 </dd>
 </dl>
 </div>
diff --git a/manual/api.html b/manual/api.html
index 7e5d0d67bf..abb169ae82 100644
--- a/manual/api.html
+++ b/manual/api.html
@@ -286,7 +286,7 @@
 <p>A logging API is an interface your code or your dependencies directly logs 
against.
 It is required at compile-time.
 It is implementation agnostic to ensure that your application can write logs, 
but is not tied to a specific logging implementation.
-Log4j API, <a href="https://www.slf4j.org/";>SLF4J</a>, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a 
href="https://commons.apache.org/proper/commons-logging/";>JCL (Apache Commons 
Logging)</a>, <a href="https://openjdk.org/jeps/264";>JPL (Java Platform 
Logging)</a> and <a href="https://github.com/jboss-logging/jboss-logging";>JBoss 
Logging</a> are major logging APIs.</p>
+Log4j API, <a href="https://www.slf4j.org";>SLF4J</a>, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a 
href="https://commons.apache.org/proper/commons-logging/";>JCL (Apache Commons 
Logging)</a>, <a href="https://openjdk.org/jeps/264";>JPL (Java Platform 
Logging)</a> and <a href="https://github.com/jboss-logging/jboss-logging";>JBoss 
Logging</a> are major logging APIs.</p>
 </dd>
 </dl>
 </div>
@@ -295,7 +295,7 @@ Log4j API, <a href="https://www.slf4j.org/";>SLF4J</a>, <a 
href="https://docs.ora
 <dt class="hdlist1">Logging implementation</dt>
 <dd>
 <p>A logging implementation is only required at runtime and can be changed 
without the need to recompile your software.
-Log4j Core, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a href="https://logback.qos.ch/";>Logback</a> are the most 
well-known logging implementations.</p>
+Log4j Core, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a href="https://logback.qos.ch";>Logback</a> are the most 
well-known logging implementations.</p>
 </dd>
 </dl>
 </div>
diff --git a/manual/architecture.html b/manual/architecture.html
index 23cbc4c9c9..048859cdad 100644
--- a/manual/architecture.html
+++ b/manual/architecture.html
@@ -466,8 +466,8 @@ However, it is generally recommended that a Marker with a 
corresponding
 global Marker Filter be used instead.</p>
 </div>
 <div class="paragraph">
-<p><a href="http://logging.apache.org/log4j/1.2/manual.html";>Log4j 1.x</a> and
-<a 
href="http://logback.qos.ch/manual/architecture.html#effectiveLevel";>Logback</a>
+<p><a href="https://logging.apache.org/log4j/1.x/manual.html";>Log4j 1</a> and
+<a 
href="https://logback.qos.ch/manual/architecture.html#effectiveLevel";>Logback</a>
 both have the concept of "Level Inheritance". In Log4j 2, Loggers and
 LoggerConfigs are two different objects so this concept is implemented
 differently. Each Logger references the appropriate LoggerConfig which
diff --git a/manual/async.html b/manual/async.html
index 0efd9c46fd..75bc0ba351 100644
--- a/manual/async.html
+++ b/manual/async.html
@@ -769,7 +769,7 @@ or predefined constant</p></td>
 </table>
 <div class="paragraph">
 <p>Determines the
-<a 
href="../javadoc/log4j-core/org/apache/logging/log4j/core/async/AsyncQueueFullPolicy.html">AsyncQueueFullPolicy</a>
+<a 
href="../javadoc/log4j-core/org/apache/logging/log4j/core/async/AsyncQueueFullPolicy.html"><code>AsyncQueueFullPolicy</code></a>
 to use when the underlying async component cannot keep up with the logging 
rate and the queue is filling up.</p>
 </div>
 <div class="paragraph">
diff --git a/manual/garbagefree.html b/manual/garbagefree.html
index 0629613be3..9bbb7bc1e3 100644
--- a/manual/garbagefree.html
+++ b/manual/garbagefree.html
@@ -389,7 +389,7 @@ If not for yours, keep on reading.</p>
 <p><a href="#core-properties">configure it using properties</a>,</p>
 </li>
 <li>
-<p>and employ garbage-free <a 
href="#Layouts[layouts]">xref:Appenders[appenders], and 
xref:#Filters,filters</a>.</p>
+<p>and employ garbage-free <a href="#Layouts">layouts</a>, <a 
href="#Appenders">appenders</a>, and <a href="#Filters">filters</a>.</p>
 </li>
 </ul>
 </div>
@@ -1183,7 +1183,7 @@ The <code>Unbox.box(primitive)</code> methods write 
directly into a <code>String
 <p>The <code>ThreadContext</code> stack (aka. NDC) is not garbage-free.</p>
 </li>
 <li>
-<p><a href="https://logging.apache.org/log4j/2.x/manual/scoped-context.adoc"; 
class="bare">https://logging.apache.org/log4j/2.x/manual/scoped-context.adoc</a>
 is not garbage-free.</p>
+<p><a 
href="https://logging.apache.org/log4j/2.x/manual/scoped-context.html";>Scoped 
Context</a> is not garbage-free.</p>
 </li>
 <li>
 <p>Logging very large messages (i.e., more than <a 
href="#log4j.gc.maxReusableMsgSize"><code>log4j.gc.maxReusableMsgSize</code></a>
 characters, which defaults to 518), when all loggers are <a href="async.html" 
class="xref page">asynchronous loggers</a>, will cause the internal 
<code>StringBuilder</code> in the
diff --git a/manual/getting-started.html b/manual/getting-started.html
index 972817263b..70ca50dafb 100644
--- a/manual/getting-started.html
+++ b/manual/getting-started.html
@@ -391,7 +391,7 @@ Let&#8217;s briefly explain these concepts:</p>
 <p>A logging API is an interface your code or your dependencies directly logs 
against.
 It is required at compile-time.
 It is implementation agnostic to ensure that your application can write logs, 
but is not tied to a specific logging implementation.
-Log4j API, <a href="https://www.slf4j.org/";>SLF4J</a>, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a 
href="https://commons.apache.org/proper/commons-logging/";>JCL (Apache Commons 
Logging)</a>, <a href="https://openjdk.org/jeps/264";>JPL (Java Platform 
Logging)</a> and <a href="https://github.com/jboss-logging/jboss-logging";>JBoss 
Logging</a> are major logging APIs.</p>
+Log4j API, <a href="https://www.slf4j.org";>SLF4J</a>, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a 
href="https://commons.apache.org/proper/commons-logging/";>JCL (Apache Commons 
Logging)</a>, <a href="https://openjdk.org/jeps/264";>JPL (Java Platform 
Logging)</a> and <a href="https://github.com/jboss-logging/jboss-logging";>JBoss 
Logging</a> are major logging APIs.</p>
 </dd>
 </dl>
 </div>
@@ -400,7 +400,7 @@ Log4j API, <a href="https://www.slf4j.org/";>SLF4J</a>, <a 
href="https://docs.ora
 <dt class="hdlist1">Logging implementation</dt>
 <dd>
 <p>A logging implementation is only required at runtime and can be changed 
without the need to recompile your software.
-Log4j Core, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a href="https://logback.qos.ch/";>Logback</a> are the most 
well-known logging implementations.</p>
+Log4j Core, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a href="https://logback.qos.ch";>Logback</a> are the most 
well-known logging implementations.</p>
 </dd>
 </dl>
 </div>
@@ -803,7 +803,7 @@ This is the most secure way to format log events and should 
be preferred over th
 <div class="paragraph">
 <p>If your application has (direct or transitive!) dependencies that use 
another logging API, you need to <a href="#logging-bridge">bridge</a> that to 
Log4j.
 This way the foreign logging API calls will effectively be consumed by Log4j 
too.
-<a href="https://www.slf4j.org/";>SLF4J</a> is another logging API used pretty 
common in the wild.
+<a href="https://www.slf4j.org";>SLF4J</a> is another logging API used pretty 
common in the wild.
 (<a href="installation.html" class="xref page">Installation</a> covers all 
supported foreign APIs.)
 Let&#8217;s see how you can use the <code>log4j-slf4j2-impl</code> bridge to 
support SLF4J:</p>
 </div>
@@ -1041,7 +1041,7 @@ Start with adding the <code>log4j-core</code> dependency 
in <strong>test</strong
 <div class="paragraph">
 <p>If your library has (direct or transitive!) dependencies that use another 
logging API, you need to <a href="#logging-bridge">bridge</a> that to Log4j.
 This way the foreign logging API calls will effectively be consumed by Log4j 
too.
-<a href="https://www.slf4j.org/";>SLF4J</a> is another logging API used pretty 
common in the wild.
+<a href="https://www.slf4j.org";>SLF4J</a> is another logging API used pretty 
common in the wild.
 (<a href="installation.html" class="xref page">Installation</a> covers all 
supported foreign APIs.)
 Let&#8217;s see how you can use the <code>log4j-slf4j2-impl</code> bridge to 
support SLF4J:</p>
 </div>
diff --git a/manual/installation.html b/manual/installation.html
index 712a47494d..03e2d491c0 100644
--- a/manual/installation.html
+++ b/manual/installation.html
@@ -333,7 +333,7 @@ See <a href="#impl-core">Installing Log4j Core</a>.</p>
 <p>A logging API is an interface your code or your dependencies directly logs 
against.
 It is required at compile-time.
 It is implementation agnostic to ensure that your application can write logs, 
but is not tied to a specific logging implementation.
-Log4j API, <a href="https://www.slf4j.org/";>SLF4J</a>, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a 
href="https://commons.apache.org/proper/commons-logging/";>JCL (Apache Commons 
Logging)</a>, <a href="https://openjdk.org/jeps/264";>JPL (Java Platform 
Logging)</a> and <a href="https://github.com/jboss-logging/jboss-logging";>JBoss 
Logging</a> are major logging APIs.</p>
+Log4j API, <a href="https://www.slf4j.org";>SLF4J</a>, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a 
href="https://commons.apache.org/proper/commons-logging/";>JCL (Apache Commons 
Logging)</a>, <a href="https://openjdk.org/jeps/264";>JPL (Java Platform 
Logging)</a> and <a href="https://github.com/jboss-logging/jboss-logging";>JBoss 
Logging</a> are major logging APIs.</p>
 </dd>
 </dl>
 </div>
@@ -342,7 +342,7 @@ Log4j API, <a href="https://www.slf4j.org/";>SLF4J</a>, <a 
href="https://docs.ora
 <dt class="hdlist1">Logging implementation</dt>
 <dd>
 <p>A logging implementation is only required at runtime and can be changed 
without the need to recompile your software.
-Log4j Core, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a href="https://logback.qos.ch/";>Logback</a> are the most 
well-known logging implementations.</p>
+Log4j Core, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a href="https://logback.qos.ch";>Logback</a> are the most 
well-known logging implementations.</p>
 </dd>
 </dl>
 </div>
@@ -582,9 +582,9 @@ See <a href="#impl-jul">Installing JUL</a> for the 
installation instructions.</p
 </dd>
 <dt class="hdlist1"><code>log4j-to-slf4j</code></dt>
 <dd>
-<p>The bridge that translates Log4j API calls to <a 
href="https://www.slf4j.org/";>SLF4J</a>.
+<p>The bridge that translates Log4j API calls to <a 
href="https://www.slf4j.org";>SLF4J</a>.
 Since currently only
-<a href="https://logback.qos.ch/";>Logback</a> implements SLF4J natively, refer 
to <a href="#impl-logback">Installing Logback</a> for the installation 
instructions.</p>
+<a href="https://logback.qos.ch";>Logback</a> implements SLF4J natively, refer 
to <a href="#impl-logback">Installing Logback</a> for the installation 
instructions.</p>
 </dd>
 </dl>
 </div>
@@ -732,7 +732,7 @@ And if so, which ones?</strong></p>
 <div class="sect4">
 <h5 id="impl-core-bridge-slf4j"><a class="anchor" 
href="#impl-core-bridge-slf4j"></a>Installing SLF4J-to-Log4j bridge</h5>
 <div class="paragraph">
-<p>You can translate <a href="https://www.slf4j.org/";>SLF4J</a> calls to Log4j 
API using the <code>log4j-slf4j2-impl</code> artifact:</p>
+<p>You can translate <a href="https://www.slf4j.org";>SLF4J</a> calls to Log4j 
API using the <code>log4j-slf4j2-impl</code> artifact:</p>
 </div>
 <div id="_tabs_5" class="openblock tabs is-sync is-loading">
 <div class="content">
@@ -1301,7 +1301,7 @@ runtimeOnly 'org.slf4j:slf4j-jdk14:2.0.13' // 
SLF4J-to-JUL bridge</code></pre>
 <div class="sect2">
 <h3 id="impl-logback"><a class="anchor" href="#impl-logback"></a>Installing 
Logback</h3>
 <div class="paragraph">
-<p>To install <a href="https://logback.qos.ch/";>Logback</a> as the logging 
implementation, you only need to add a Log4j-to-SLF4J bridge:</p>
+<p>To install <a href="https://logback.qos.ch";>Logback</a> as the logging 
implementation, you only need to add a Log4j-to-SLF4J bridge:</p>
 </div>
 <div id="_tabs_15" class="openblock tabs is-sync is-loading">
 <div class="content">
diff --git a/manual/json-template-layout.html b/manual/json-template-layout.html
index 5f25197915..ede1598b95 100644
--- a/manual/json-template-layout.html
+++ b/manual/json-template-layout.html
@@ -278,7 +278,7 @@
 <div id="preamble">
 <div class="sectionbody">
 <div class="paragraph">
-<p><code>JsonTemplateLayout</code> is a customizable, <a 
href="#performance">efficient</a>, and 
xref:#faq-garbage-free,garbage-free&gt;&gt; JSON generating layout.
+<p><code>JsonTemplateLayout</code> is a customizable, <a 
href="#performance">efficient</a>, and <a 
href="#faq-garbage-free">garbage-free</a> JSON generating layout.
 It encodes <code>LogEvent</code>s according to the structure described by the 
JSON template provided.
 In a nutshell, it shines with its</p>
 </div>
@@ -887,7 +887,7 @@ That is,</p>
     "key00002": "value00002",
     "key00003": "value00003",
     // ...
-    "key16384": "value16384",
+    "key16384": "value16384"
   }
 }</code></pre>
 </div>
@@ -987,7 +987,7 @@ Accepted values are:</p>
 </div>
 <div id="_tabs_3_xml--panel" class="tabpanel" aria-labelledby="_tabs_3_xml">
 <div class="listingblock">
-<div class="title">Snippet from an example <a 
href="https://github.com/apache/logging-log4j2/tree/main/src/site/antora/modules/ROOT/examples/manual/json-template-layout/eventTemplateAdditionalField/log4j2.xml";><code>log4j2.xml</code></a></div>
+<div class="title">Snippet from an example <a 
href="https://github.com/apache/logging-log4j2/tree/main/src/site/antora/modules/ROOT/examples/manual/json-template-layout/event-template-additional-field/log4j2.xml";><code>log4j2.xml</code></a></div>
 <div class="content">
 <pre class="highlightjs highlight"><code class="language-xml hljs" 
data-lang="xml">&lt;JsonTemplateLayout 
eventTemplateUri="classpath:GelfLayout.json"&gt;
   &lt;EventTemplateAdditionalField
@@ -1011,7 +1011,7 @@ Accepted values are:</p>
 </div>
 <div id="_tabs_3_json--panel" class="tabpanel" aria-labelledby="_tabs_3_json">
 <div class="listingblock">
-<div class="title">Snippet from an example <a 
href="https://github.com/apache/logging-log4j2/tree/main/src/site/antora/modules/ROOT/examples/manual/json-template-layout/eventTemplateAdditionalField/log4j2.json";><code>log4j2.json</code></a></div>
+<div class="title">Snippet from an example <a 
href="https://github.com/apache/logging-log4j2/tree/main/src/site/antora/modules/ROOT/examples/manual/json-template-layout/event-template-additional-field/log4j2.json";><code>log4j2.json</code></a></div>
 <div class="content">
 <pre class="highlightjs highlight"><code class="language-json hljs" 
data-lang="json">"JsonTemplateLayout": {
   "eventTemplateUri": "classpath:GelfLayout.json",
@@ -1042,7 +1042,7 @@ Accepted values are:</p>
 </div>
 <div id="_tabs_3_yaml--panel" class="tabpanel" aria-labelledby="_tabs_3_yaml">
 <div class="listingblock">
-<div class="title">Snippet from an example <a 
href="https://github.com/apache/logging-log4j2/tree/main/src/site/antora/modules/ROOT/examples/manual/json-template-layout/eventTemplateAdditionalField/log4j2.yaml";><code>log4j2.yaml</code></a></div>
+<div class="title">Snippet from an example <a 
href="https://github.com/apache/logging-log4j2/tree/main/src/site/antora/modules/ROOT/examples/manual/json-template-layout/event-template-additional-field/log4j2.yaml";><code>log4j2.yaml</code></a></div>
 <div class="content">
 <pre class="highlightjs highlight"><code class="language-xml hljs" 
data-lang="xml">JsonTemplateLayout:
   eventTemplateUri: "classpath:GelfLayout.json"
@@ -1063,7 +1063,7 @@ Accepted values are:</p>
 </div>
 <div id="_tabs_3_properties--panel" class="tabpanel" 
aria-labelledby="_tabs_3_properties">
 <div class="listingblock">
-<div class="title">Snippet from an example <a 
href="https://github.com/apache/logging-log4j2/tree/main/src/site/antora/modules/ROOT/examples/manual/json-template-layout/eventTemplateAdditionalField/log4j2.properties";><code>log4j2.properties</code></a></div>
+<div class="title">Snippet from an example <a 
href="https://github.com/apache/logging-log4j2/tree/main/src/site/antora/modules/ROOT/examples/manual/json-template-layout/event-template-additional-field/log4j2.properties";><code>log4j2.properties</code></a></div>
 <div class="content">
 <pre class="highlightjs highlight"><code class="language-xml hljs" 
data-lang="xml">appender.0.layout.type = JsonTemplateLayout
 appender.0.layout.eventTemplateUri = classpath:GelfLayout.json
@@ -2042,6 +2042,9 @@ stackTraceEnabled = "stackTraceEnabled" -&gt; 
boolean</code></pre>
 </div>
 </div>
 <div class="paragraph">
+<p>Unlike providing the <code>pattern</code> attribute to Pattern Layout in a 
configuration file, <a href="#faq-lookups">property substitutions</a> found in 
the <code>pattern</code> will <em>not</em> be resolved.</p>
+</div>
+<div class="paragraph">
 <p>The default value of <code>stackTraceEnabled</code> is inherited from the 
parent JSON Template Layout.</p>
 </div>
 <div class="admonitionblock note">
@@ -2564,6 +2567,228 @@ The stack trace template used by these event template 
resolvers to encode <code>
 </div>
 </div>
 <div class="sect1">
+<h2 id="faq-lookups"><a class="anchor" href="#faq-lookups"></a>Property 
substitution</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Property substitutions (e.g., <code>${myProperty}</code>), including <a 
href="lookups.html" class="xref page">lookups</a> (e.g., 
<code>${java:version}</code>, <code>${env:USER}</code>, 
<code>${date:MM-dd-yyyy}</code>), are supported, but extra care needs to be 
taken.
+<strong>We strongly advise you to carefully read <a 
href="configuration.html#property-substitution" class="xref page">the 
configuration manual</a></strong> before using them.</p>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p><a href="lookups.html" class="xref page">Lookups</a> are intended as a very 
generic, convenience utility to perform string interpolation for, in 
particular, configuration files and components (e.g., layouts) lacking this 
mechanism.
+<strong>JSON Template Layout has a rich template resolver collection, and you 
should always prefer it whenever possible over lookups.</strong></p>
+</div>
+<details>
+<summary class="title">Which resolvers can I use to replace lookups?</summary>
+<div class="content">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Instead of this lookup</th>
+<th class="tableblock halign-left valign-top">Use this resolver</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="lookups.html#ContextMapLookup" class="xref page">Context Map 
Lookup</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="#event-template-resolver-mdc"><code>mdc</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="lookups.html#DateLookup" class="xref page">Date Lookup</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="#event-template-resolver-timestamp"><code>timestamp</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="lookups.html#EventLookup" class="xref page">Event Lookup</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="#event-template-resolver-exception"><code>exception</code></a><br>
+<a href="#event-template-resolver-level"><code>level</code></a><br>
+<a href="#event-template-resolver-logger"><code>logger</code></a><br>
+<a href="#event-template-resolver-marker"><code>marker</code></a><br>
+<a href="#event-template-resolver-message"><code>message</code></a><br>
+<a href="#event-template-resolver-thread"><code>thread</code></a><br>
+<a 
href="#event-template-resolver-timestamp"><code>timestamp</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="lookups.html#LowerLookup" class="xref page">Lower Lookup</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="#event-template-resolver-caseConverter"><code>caseConverter</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="lookups.html#AppMainArgsLookup" class="xref page">Main Arguments 
Lookup</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="#event-template-resolver-main"><code>main</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="lookups.html#MapLookup" class="xref page">Map Lookup</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="#event-template-resolver-map"><code>map</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="lookups.html#marker-lookup" class="xref page">Marker Lookup</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="#event-template-resolver-marker"><code>marker</code></a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="lookups.html#UpperLookup" class="xref page">Upper Lookup</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a 
href="#event-template-resolver-caseConverter"><code>caseConverter</code></a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</details>
+</td>
+</tr>
+</table>
+</div>
+<div class="sect2">
+<h3 id="property-substitution-in-template"><a class="anchor" 
href="#property-substitution-in-template"></a>Property substitution in event 
templates</h3>
+<div class="paragraph">
+<p>JSON Template Layout performs property substitution in string literals in 
templates, except if they are located in <em>configuration object of 
resolvers</em>.
+Consider the following event template file provided using <a 
href="#plugin-attr-eventTemplateUri">the <code>eventTemplateUri</code> 
attribute</a>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-json hljs" 
data-lang="json">{
+    "java-version": "${java:version}", <i class="conum" 
data-value="1"></i><b>(1)</b>
+    "pid": {
+      "$resolver": "pattern",
+      "pattern": "${env:NO_SUCH_KEY:-%pid}" <i class="conum" 
data-value="2"></i><b>(2)</b>
+    }
+}</code></pre>
+</div>
+</div>
+<div class="colist arabic">
+<table>
+<tr>
+<td><i class="conum" data-value="1"></i><b>1</b></td>
+<td>This works. <code>${java:version}</code> will be replaced with the 
corresponding value.</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="2"></i><b>2</b></td>
+<td>This won&#8217;t work! That is, <code>${env:NO_SUCH_KEY:-%pid}</code> 
literal will not get substituted, since it is located in a <em>configuration 
object of a resolver</em>.</td>
+</tr>
+</table>
+</div>
+</div>
+<div class="sect2">
+<h3 id="property-substitution-in-config"><a class="anchor" 
href="#property-substitution-in-config"></a>Property substitution in 
configuration files</h3>
+<div class="paragraph">
+<p>If the very same event template <a 
href="#property-substitution-in-template">shared above</a> is inlined in a 
configuration file using <a href="#plugin-attr-eventTemplate">the 
<code>eventTemplate</code> attribute</a> or <a 
href="#plugin-element-EventTemplateAdditionalField">additional event template 
fields</a>, then all substitutions will be replaced, once, at 
configuration-time.
+This has nothing to do with the JSON Template Layout, but the substitution 
performed by the configuration mechanism when the configuration is read.
+Consider the following example:</p>
+</div>
+<div id="_tabs_4" class="openblock tabs is-sync is-loading">
+<div class="content">
+<div class="ulist tablist">
+<ul>
+<li id="_tabs_4_xml" class="tab">
+<p>XML</p>
+</li>
+<li id="_tabs_4_json" class="tab">
+<p>JSON</p>
+</li>
+<li id="_tabs_4_yaml" class="tab">
+<p>YAML</p>
+</li>
+<li id="_tabs_4_properties" class="tab">
+<p>Properties</p>
+</li>
+</ul>
+</div>
+<div id="_tabs_4_xml--panel" class="tabpanel" aria-labelledby="_tabs_4_xml">
+<div class="listingblock">
+<div class="title">Snippet from an example <a 
href="https://github.com/apache/logging-log4j2/tree/main/src/site/antora/modules/ROOT/examples/manual/json-template-layout/property-substitution/log4j2.xml";><code>log4j2.xml</code></a></div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" 
data-lang="xml">&lt;JsonTemplateLayout eventTemplate='{"instant": {"$resolver": 
"pattern", "pattern": "${env:LOG4J_DATE_PATTERN:-%d}"}}'&gt; <i class="conum" 
data-value="1"></i><b>(1)</b>
+  &lt;EventTemplateAdditionalField
+      key="message"
+      format="JSON"
+      value='{"$resolver": "pattern", "pattern": 
"${env:LOG4J_MESSAGE_PATTERN:-%m}"}'/&gt; <i class="conum" 
data-value="2"></i><b>(2)</b>
+&lt;/JsonTemplateLayout&gt;</code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_4_json--panel" class="tabpanel" aria-labelledby="_tabs_4_json">
+<div class="listingblock">
+<div class="title">Snippet from an example <a 
href="https://github.com/apache/logging-log4j2/tree/main/src/site/antora/modules/ROOT/examples/manual/json-template-layout/property-substitution/log4j2.json";><code>log4j2.json</code></a></div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-json hljs" 
data-lang="json">"JsonTemplateLayout": {
+  "eventTemplate": "{\"instant\": {\"$resolver\": \"pattern\", \"pattern\": 
\"${env:LOG4J_DATE_PATTERN:-%d}\"}}", <i class="conum" 
data-value="1"></i><b>(1)</b>
+  "eventTemplateAdditionalField": [
+    {
+      "key": "message",
+      "format": "JSON",
+      "value": "{\"$resolver\": \"pattern\", \"pattern\": 
\"${env:LOG4J_MESSAGE_PATTERN:-%m}\"}" <i class="conum" 
data-value="2"></i><b>(2)</b>
+    }
+  ]
+}</code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_4_yaml--panel" class="tabpanel" aria-labelledby="_tabs_4_yaml">
+<div class="listingblock">
+<div class="title">Snippet from an example <a 
href="https://github.com/apache/logging-log4j2/tree/main/src/site/antora/modules/ROOT/examples/manual/json-template-layout/property-substitution/log4j2.yaml";><code>log4j2.yaml</code></a></div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" 
data-lang="xml">JsonTemplateLayout:
+  eventTemplate: '{"instant": {"$resolver": "pattern", "pattern": 
"${env:LOG4J_DATE_PATTERN:-%d}"}}' <i class="conum" 
data-value="1"></i><b>(1)</b>
+  eventTemplateAdditionalField:
+    - key: "message"
+      format: "JSON"
+      value: '{"$resolver": "pattern", "pattern": 
"${env:LOG4J_MESSAGE_PATTERN:-%m}"}' <i class="conum" 
data-value="2"></i><b>(2)</b></code></pre>
+</div>
+</div>
+</div>
+<div id="_tabs_4_properties--panel" class="tabpanel" 
aria-labelledby="_tabs_4_properties">
+<div class="listingblock">
+<div class="title">Snippet from an example <a 
href="https://github.com/apache/logging-log4j2/tree/main/src/site/antora/modules/ROOT/examples/manual/json-template-layout/property-substitution/log4j2.properties";><code>log4j2.properties</code></a></div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" 
data-lang="xml">appender.0.layout.type = JsonTemplateLayout
+appender.0.layout.eventTemplate = {"instant": {"$resolver": "pattern", 
"pattern": "${env:LOG4J_DATE_PATTERN:-%d}"}} <i class="conum" 
data-value="1"></i><b>(1)</b>
+appender.0.layout.eventTemplateAdditionalField[0].type = 
EventTemplateAdditionalField
+appender.0.layout.eventTemplateAdditionalField[0].key = message
+appender.0.layout.eventTemplateAdditionalField[0].format = JSON
+appender.0.layout.eventTemplateAdditionalField[0].value = {"$resolver": 
"pattern", "pattern": "${env:LOG4J_MESSAGE_PATTERN:-%m}"} <i class="conum" 
data-value="2"></i><b>(2)</b></code></pre>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="colist arabic">
+<table>
+<tr>
+<td><i class="conum" data-value="1"></i><b>1</b></td>
+<td><code>eventTemplate</code> will be passed to the layout with 
<code>${env:&#8230;&#8203;}</code> substituted</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="2"></i><b>2</b></td>
+<td><code>value</code> will be passed to the layout with 
<code>${env:&#8230;&#8203;}</code> substituted</td>
+</tr>
+</table>
+</div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>External values injected this way can corrupt your JSON schema.
+It is your responsibility to ensure the sanitization and safety of the 
substitution source.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
 <h2 id="extending"><a class="anchor" href="#extending"></a>Extending</h2>
 <div class="sectionbody">
 <div class="paragraph">
@@ -2945,18 +3170,6 @@ To get the most out of it, mind the following 
checklist:</p>
 <h2 id="faq"><a class="anchor" href="#faq"></a>F.A.Q.</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="faq-lookups"><a class="anchor" href="#faq-lookups"></a>Are lookups 
supported in templates?</h3>
-<div class="paragraph">
-<p>Yes, <a href="lookups.html" class="xref page">lookups</a> (e.g., 
<code>${java:version}</code>, <code>${env:USER}</code>, 
<code>${date:MM-dd-yyyy}</code>) are supported in string literals of 
templates.</p>
-</div>
-<div class="paragraph">
-<p>Encoding the output of a lookup is garbage-free, but executing the lookup 
might not be.
-For instance, even though <a href="lookups.html#DateLookup" class="xref 
page">the <code>date</code> lookup</a> allocates a new <code>String</code> for 
each invocation, adding <code>${date:YYYY-MM-dd}</code> is garbage-free, 
because it will be expanded at configuration time, that is, only once.
-Whereas adding <code>$${date:YYYY-MM-dd}</code> is not, since it will be 
expanded for each log event.
-See <a href="configuration.html#property-substitution" class="xref 
page">property substitution</a> for details.</p>
-</div>
-</div>
-<div class="sect2">
 <h3 id="faq-recursive-collection"><a class="anchor" 
href="#faq-recursive-collection"></a>Are recursive collections supported?</h3>
 <div class="paragraph">
 <p>No. Consider a <code>Message</code> containing a recursive value as 
follows:</p>
@@ -2991,12 +3204,13 @@ Take into account the following caveats:</p>
 <p>Serialization of <code>MapMessage</code>s and <code>ObjectMessage</code>s 
are mostly garbage-free except for certain types (e.g., 
<code>BigDecimal</code>, <code>BigInteger</code>, <code>Collection</code>s, 
except <code>List</code>).</p>
 </li>
 <li>
-<p><a href="lookups.html" class="xref page">Lookups</a> (that is, 
<code>${&#8230;&#8203;}</code> variables) are not garbage-free.</p>
+<p><a href="#faq-lookups">Property substitutions</a> (that is, 
<code>${&#8230;&#8203;}</code> variables) <em>might</em> not be 
garbage-free.</p>
 </li>
 </ul>
 </div>
 <div class="paragraph">
-<p>Don&#8217;t forget to check out <a href="#event-template-resolvers">the 
notes on garbage footprint of resolvers</a> you employ in templates.</p>
+<p><a href="#event-template-resolvers">Event template resolvers</a> contain 
notes on their garbage footprint.
+Make sure to check those notes of resolvers you employ in templates.</p>
 </div>
 </div>
 </div>
diff --git a/manual/layouts.html b/manual/layouts.html
index 410edda687..794353c805 100644
--- a/manual/layouts.html
+++ b/manual/layouts.html
@@ -302,9 +302,24 @@ This page will try to answer following questions:</p>
 <p>This section introduces you to some common concerns shared by almost all <a 
href="#collection">predefined layouts</a> that you need to be aware of while 
using them.</p>
 </div>
 <div class="sect2">
+<h3 id="structured-logging"><a class="anchor" 
href="#structured-logging"></a>Structured logging</h3>
+<div class="paragraph">
+<p>In almost any modern production deployment, logs are no more written to 
files read by engineers while troubleshooting, but forwarded to log ingestion 
systems (Elasticsearch, Google Cloud Logging, etc.) for several observability 
use cases ranging from logging to metrics.
+This necessitates the applications to <em>structure</em> their logs in a 
machine-readable way ready to be delivered to an external system.
+This act of encoding logs following a certain structure is called 
<strong>structured logging</strong>.</p>
+</div>
+<div class="paragraph">
+<p>Log4j strives to provide top of the class support for structured logging.
+To create an end-to-end experience, it provides several <a 
href="#manual/messages.adoc#collection-structured" class="xref 
unresolved">structured message types</a> along with layouts supporting 
structured logging.</p>
+</div>
+<div class="paragraph">
+<p>We recommend <a href="json-template-layout.html" class="xref page">JSON 
Template Layout</a> for structured logging purposes.</p>
+</div>
+</div>
+<div class="sect2">
 <h3 id="charset"><a class="anchor" href="#charset"></a>Character encoding</h3>
 <div class="paragraph">
-<p>All <a href="#collection[predefined layouts] produce <code>String</code> 
that eventually get converted into a <code>byte">[collection[predefined 
layouts] produce <code>String</code> that eventually get converted into a 
<code>byte]</a></code> using the <a 
href="https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html";><code>Charset</code></a>
 configured.
+<p>All <a href="#collection">predefined layouts</a> produce 
<code>String</code> that eventually get converted into a <code>byte</code> 
using the <a 
href="https://docs.oracle.com/javase/17/docs/api/java/nio/charset/Charset.html";><code>Charset</code></a>
 configured.
 While doing so, unless an explicit encoding configuration is stated, they use 
<code>UTF-8</code> by default.
 If you want all your log events to be formatted in a certain character 
encoding that is different from what the employed layout defaults to, make sure 
to configure the layout&#8217;s character encoding as needed.</p>
 </div>
@@ -718,9 +733,6 @@ You can use time zone IDs supported by <a 
href="https://docs.oracle.com/javase/8
 It encodes <code>LogEvent</code>s according to the structure described by the 
JSON template provided.</p>
 </div>
 <div class="paragraph">
-<p><a 
href="../plugin-reference.html#org-apache-logging-log4j_log4j-layout-template-json_org-apache-logging-log4j-layout-template-json-JsonTemplateLayout"
 class="xref page">📖 Plugin reference for 
<code>JsonTemplateLayout</code></a></p>
-</div>
-<div class="paragraph">
 <p>For instance, given the following event template stored in 
<code>MyLayout.json</code> in your classpath:</p>
 </div>
 <div class="listingblock">
@@ -862,9 +874,6 @@ For production environments, you are strongly advised to 
use <a href="json-templ
 </table>
 </div>
 <div class="paragraph">
-<p><a 
href="../plugin-reference.html#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-PatternLayout"
 class="xref page">📖 Plugin reference for <code>PatternLayout</code></a></p>
-</div>
-<div class="paragraph">
 <p>A conversion pattern is composed of literal text and format control 
expressions.
 For instance, given the <code>%-5p [%t]: %m%n</code> pattern, following 
statements</p>
 </div>
@@ -1027,6 +1036,10 @@ This attribute only applies to RFC 5424 Syslog 
records.</p></td>
 </tr>
 </tbody>
 </table>
+<div class="paragraph">
+<p>RFC 5424 Layout has specialized handling for <a 
href="#manual/messages.adoc#StructuredDataMessage" class="xref 
unresolved"><code>StructuredDataMessage</code></a>s.
+By combining two, users can have complete control on how their message is 
encoded in a way compliant with RFC 5424, while RFC 5424 Layout will make sure 
the rest of the information attached to the log event is properly injected.</p>
+</div>
 </div>
 <div class="sect2">
 <h3 id="SyslogLayout"><a class="anchor" href="#SyslogLayout"></a>Syslog 
Layout</h3>
diff --git a/manual/lookups.html b/manual/lookups.html
index 900bc53a82..26f91a7c35 100644
--- a/manual/lookups.html
+++ b/manual/lookups.html
@@ -913,7 +913,7 @@ page for information on how to set the default values.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_marker_lookup"><a class="anchor" href="#_marker_lookup"></a>Marker 
Lookup</h2>
+<h2 id="marker-lookup"><a class="anchor" href="#marker-lookup"></a>Marker 
Lookup</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>The marker lookup allows you to use markers in interesting
diff --git a/manual/pattern-layout.html b/manual/pattern-layout.html
index 0d1299ff51..e9da94e27e 100644
--- a/manual/pattern-layout.html
+++ b/manual/pattern-layout.html
@@ -278,7 +278,7 @@
 <div id="preamble">
 <div class="sectionbody">
 <div class="paragraph">
-<p><code>PatternLayout</code> is a customizable, <a 
href="#performance[efficient]">xref:#garbage-free,garbage-free</a>, and 
human-readable string generating layout using a user-provided pattern.
+<p><code>PatternLayout</code> is a customizable, <a 
href="#performance">efficient</a>, <a href="#garbage-free">garbage-free</a>, 
and human-readable string generating layout using a user-provided pattern.
 It is analogous to <code>String#format()</code> with specialized directives on 
injecting certain properties of a <code>LogEvent</code>.</p>
 </div>
 <div class="admonitionblock important">
@@ -1462,15 +1462,11 @@ See <a href="#ansi-modifiers">Style modifiers</a> for 
the syntax of <code>&lt;st
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>STYLE=default</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Sets the 
default style, which is equivalent to the following sequence of directives:
-<code>FATAL=bold red, ERROR=bold red, WARN=yellow, INFO=green, DEBUG=cyan, 
TRACE=black</code>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Sets the 
default style, which is equivalent to the following sequence of directives: 
<code>FATAL=bold red, ERROR=bold red, WARN=yellow, INFO=green, DEBUG=cyan, 
TRACE=black</code>.</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>STYLE=logback</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Applies 
the style used by
-<a href="https://logback.qos.ch/manual/layouts.html#coloring";>Logback&#8217;s 
<code>%highlight</code> converter</a>,
-which is equivalent to the following sequence of directives:
-<code>FATAL=blink bold red, ERROR=bold red, WARN=red, INFO=blue, DEBUG=normal, 
TRACE=normal</code>.</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Applies 
the style used by <a 
href="https://logback.qos.ch/manual/layouts.html#coloring";>Logback&#8217;s 
<code>%highlight</code> converter</a>, which is equivalent to the following 
sequence of directives: <code>FATAL=blink bold red, ERROR=bold red, WARN=red, 
INFO=blue, DEBUG=normal, TRACE=normal</code>.</p></td>
 </tr>
 </tbody>
 </table>
@@ -2660,13 +2656,7 @@ Format modifiers to control such things as field width, 
padding, left, and right
 <tr>
 <td class="tableblock halign-left valign-top" style="background-color: 
white;"><p class="tableblock"><code>literal text</code></p></td>
 <td class="tableblock halign-left valign-top" style="background-color: 
white;"><div class="content"><div class="paragraph">
-<p>Garbage-free, but care is needed for <a href="lookups.html" class="xref 
page">Lookups</a>.</p>
-</div>
-<div class="paragraph">
-<p>Encoding the output of a lookup is garbage-free, but executing the lookup 
might not be.
-For instance, even though <a href="lookups.html#DateLookup" class="xref 
page">the <code>date</code> lookup</a> allocates a new <code>String</code> for 
each invocation, adding <code>${date:YYYY-MM-dd}</code> is garbage-free, 
because it will be expanded at configuration time, that is, only once.
-Whereas adding <code>$${date:YYYY-MM-dd}</code> is not, since it will be 
expanded for each log event.
-See <a href="configuration.html#property-substitution" class="xref 
page">property substitution</a> for details.</p>
+<p>Garbage-free, but care is needed for <a 
href="#property-substitution">Property substitution</a>, including <a 
href="lookups.html" class="xref page">Lookups</a></p>
 </div></div></td>
 </tr>
 </tbody>
@@ -2678,6 +2668,77 @@ See <a href="configuration.html#property-substitution" 
class="xref page">propert
 </div>
 </div>
 <div class="sect1">
+<h2 id="property-substitution"><a class="anchor" 
href="#property-substitution"></a>Property substitution</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p><a href="configuration.html#property-substitution" class="xref 
page">Property substitutions</a> (e.g., <code>${myProperty}</code>), including 
<a href="lookups.html" class="xref page">lookups</a> (e.g., 
<code>${java:version}</code>, <code>${env:USER}</code>, 
<code>${date:MM-dd-yyyy}</code>) are supported, but extra care needs to be 
taken.
+<strong>We strongly advise you to carefully read <a 
href="configuration.html#property-substitution" class="xref page">the 
configuration manual</a></strong> before using them.</p>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p><a href="lookups.html" class="xref page">Lookups</a> are intended as a very 
generic, convenience utility to perform string interpolation for, in 
particular, configuration files and components (e.g., layouts) lacking this 
mechanism.
+<strong>Pattern Layout has a rich converter collection, and you should always 
prefer it whenever possible over lookups.</strong></p>
+</div>
+<details>
+<summary class="title">Which converters can I use to replace lookups?</summary>
+<div class="content">
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top" style="background-color: 
white;">Instead of this lookup</th>
+<th class="tableblock halign-left valign-top" style="background-color: 
white;">Use this converter</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top" style="background-color: 
white;"><p class="tableblock"><a href="lookups.html#ContextMapLookup" 
class="xref page">Context Map Lookup</a></p></td>
+<td class="tableblock halign-left valign-top" style="background-color: 
white;"><p class="tableblock"><a href="#converter-thread-context-map">Thread 
context map</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top" style="background-color: 
white;"><p class="tableblock"><a href="lookups.html#DateLookup" class="xref 
page">Date Lookup</a></p></td>
+<td class="tableblock halign-left valign-top" style="background-color: 
white;"><p class="tableblock"><a href="#converter-date">Date</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top" style="background-color: 
white;"><p class="tableblock"><a href="lookups.html#EventLookup" class="xref 
page">Event Lookup</a></p></td>
+<td class="tableblock halign-left valign-top" style="background-color: 
white;"><p class="tableblock"><a href="#converter-exception">Exception</a><br>
+<a href="#converter-exception-extended">Exception (Extended)</a><br>
+<a href="#converter-level">Level</a><br>
+<a href="#converter-logger">Logger</a><br>
+<a href="#converter-marker">Marker</a><br>
+<a href="#converter-message">Message</a><br>
+<a href="#converter-thread-id">Thread ID</a><br>
+<a href="#converter-thread-name">Thread name</a><br>
+<a href="#converter-date">Date</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top" style="background-color: 
white;"><p class="tableblock"><a href="lookups.html#MapLookup" class="xref 
page">Map Lookup</a></p></td>
+<td class="tableblock halign-left valign-top" style="background-color: 
white;"><p class="tableblock"><a href="#converter-map">Map</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top" style="background-color: 
white;"><p class="tableblock"><a href="lookups.html#marker-lookup" class="xref 
page">Marker Lookup</a></p></td>
+<td class="tableblock halign-left valign-top" style="background-color: 
white;"><p class="tableblock"><a href="#converter-marker">Marker</a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</details>
+</td>
+</tr>
+</table>
+</div>
+</div>
+</div>
+<div class="sect1">
 <h2 id="extending"><a class="anchor" href="#extending"></a>Extending</h2>
 <div class="sectionbody">
 <div class="paragraph">
diff --git a/manual/systemproperties.html b/manual/systemproperties.html
index 68c1b0ed6e..323e40c661 100644
--- a/manual/systemproperties.html
+++ b/manual/systemproperties.html
@@ -585,7 +585,7 @@ or predefined constant</p></td>
 </table>
 <div class="paragraph">
 <p>Determines the
-<a 
href="../javadoc/log4j-core/org/apache/logging/log4j/core/async/AsyncQueueFullPolicy.html">AsyncQueueFullPolicy</a>
+<a 
href="../javadoc/log4j-core/org/apache/logging/log4j/core/async/AsyncQueueFullPolicy.html"><code>AsyncQueueFullPolicy</code></a>
 to use when the underlying async component cannot keep up with the logging 
rate and the queue is filling up.</p>
 </div>
 <div class="paragraph">
@@ -1441,6 +1441,26 @@ For a thread local recycler, it corresponds to the 
per-thread buffer size.</p>
 <div class="paragraph">
 <p>To configure the thread context used by Log4j Core, you can use the 
following properties:</p>
 </div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>These configuration properties are only used by Log4j Core and <a 
href="https://logging.apache.org/log4j/2.x/manual/simple-logger.html";>Simple 
Logger</a> of Log4j API.</p>
+</div>
+<div class="paragraph">
+<p>The <code>log4j-to-slf4j</code> logging bridge delegates 
<code>ThreadContext</code> calls to <a 
href="https://www.slf4j.org/api/org/slf4j/MDC.html";>the SLF4J <code>MDC</code> 
class</a>.</p>
+</div>
+<div class="paragraph">
+<p>The <code>log4j-to-jul</code> logging bridge ignores all 
<code>ThreadContext</code> method calls.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
 <div class="sect3">
 <h4 id="log4j.threadContext.enable"><a class="anchor" 
href="#log4j.threadContext.enable"></a><code>log4j.threadContext.enable</code></h4>
 <table class="tableblock frame-all grid-all stretch">
@@ -2062,7 +2082,7 @@ to use for the value of the <a 
href="#log4j.auth.basic.password"><code>log4j.aut
 </table>
 <div class="paragraph">
 <p>The type of private key store.
-See <a 
href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#KeyStore";>KeyStore
 types</a>.</p>
+See <a 
href="https://docs.oracle.com/javase/17/docs/technotes/guides/security/StandardNames.html#KeyStore";><code>KeyStore</code></a>.</p>
 </div>
 </div>
 <div class="sect3">
@@ -2140,7 +2160,7 @@ See <a 
href="https://docs.oracle.com/javase/17/docs/api/java/time/Clock.html#sys
 <dd>
 <p>uses a separate thread to update the timestamp value.
 See
-<a 
href="../javadoc/log4j-core/org/apache/logging/log4j/core/util/CachedClock.html">JavaDoc</a>
+<a 
href="../javadoc/log4j-core/org/apache/logging/log4j/core/util/CachedClock.html"><code>CachedClock</code></a>
 for details.</p>
 </dd>
 <dt class="hdlist1">CoarseCachedClock</dt>
diff --git a/migrate-from-logback.html b/migrate-from-logback.html
index 0a698a75bb..0eac443ffb 100644
--- a/migrate-from-logback.html
+++ b/migrate-from-logback.html
@@ -276,7 +276,7 @@
 <div id="preamble">
 <div class="sectionbody">
 <div class="paragraph">
-<p><a href="https://logback.qos.ch/";>Logback</a> is a logging implementation 
for the <a href="https://www.slf4j.org/";>SLF4J</a> logging API, just like Log4j 
Core is a logging implementation for the <a href="manual/api.html" class="xref 
page">Log4j API</a>.
+<p><a href="https://logback.qos.ch";>Logback</a> is a logging implementation 
for the <a href="https://www.slf4j.org";>SLF4J</a> logging API, just like Log4j 
Core is a logging implementation for the <a href="manual/api.html" class="xref 
page">Log4j API</a>.
 In this page we will guide you through migrating from Logback to Log4j Core as 
your logging implementation.</p>
 </div>
 <div class="admonitionblock tip">
@@ -304,7 +304,7 @@ Please refer to <a href="migrate-from-slf4j.html" 
class="xref page">Migrating fr
 <p>A logging API is an interface your code or your dependencies directly logs 
against.
 It is required at compile-time.
 It is implementation agnostic to ensure that your application can write logs, 
but is not tied to a specific logging implementation.
-Log4j API, <a href="https://www.slf4j.org/";>SLF4J</a>, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a 
href="https://commons.apache.org/proper/commons-logging/";>JCL (Apache Commons 
Logging)</a>, <a href="https://openjdk.org/jeps/264";>JPL (Java Platform 
Logging)</a> and <a href="https://github.com/jboss-logging/jboss-logging";>JBoss 
Logging</a> are major logging APIs.</p>
+Log4j API, <a href="https://www.slf4j.org";>SLF4J</a>, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a 
href="https://commons.apache.org/proper/commons-logging/";>JCL (Apache Commons 
Logging)</a>, <a href="https://openjdk.org/jeps/264";>JPL (Java Platform 
Logging)</a> and <a href="https://github.com/jboss-logging/jboss-logging";>JBoss 
Logging</a> are major logging APIs.</p>
 </dd>
 </dl>
 </div>
@@ -313,7 +313,7 @@ Log4j API, <a href="https://www.slf4j.org/";>SLF4J</a>, <a 
href="https://docs.ora
 <dt class="hdlist1">Logging implementation</dt>
 <dd>
 <p>A logging implementation is only required at runtime and can be changed 
without the need to recompile your software.
-Log4j Core, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a href="https://logback.qos.ch/";>Logback</a> are the most 
well-known logging implementations.</p>
+Log4j Core, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a href="https://logback.qos.ch";>Logback</a> are the most 
well-known logging implementations.</p>
 </dd>
 </dl>
 </div>
diff --git a/migrate-from-slf4j.html b/migrate-from-slf4j.html
index ae87d00711..9a7b073642 100644
--- a/migrate-from-slf4j.html
+++ b/migrate-from-slf4j.html
@@ -276,7 +276,7 @@
 <div id="preamble">
 <div class="sectionbody">
 <div class="paragraph">
-<p><a href="https://www.slf4j.org/";>SLF4J</a> is a logging API whose reference 
implementation is <a href="https://logback.qos.ch/";>Logback</a>, just like <a 
href="manual/api.html" class="xref page">Log4j API</a> is a logging API whose 
reference implementation is Log4j Core.
+<p><a href="https://www.slf4j.org";>SLF4J</a> is a logging API whose reference 
implementation is <a href="https://logback.qos.ch";>Logback</a>, just like <a 
href="manual/api.html" class="xref page">Log4j API</a> is a logging API whose 
reference implementation is Log4j Core.
 In this page we will guide you through migrating from SLF4J to Log4j API as 
your logging API.</p>
 </div>
 <div class="admonitionblock tip">
@@ -304,7 +304,7 @@ Please refer to <a href="migrate-from-logback.html" 
class="xref page">Migrating
 <p>A logging API is an interface your code or your dependencies directly logs 
against.
 It is required at compile-time.
 It is implementation agnostic to ensure that your application can write logs, 
but is not tied to a specific logging implementation.
-Log4j API, <a href="https://www.slf4j.org/";>SLF4J</a>, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a 
href="https://commons.apache.org/proper/commons-logging/";>JCL (Apache Commons 
Logging)</a>, <a href="https://openjdk.org/jeps/264";>JPL (Java Platform 
Logging)</a> and <a href="https://github.com/jboss-logging/jboss-logging";>JBoss 
Logging</a> are major logging APIs.</p>
+Log4j API, <a href="https://www.slf4j.org";>SLF4J</a>, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a 
href="https://commons.apache.org/proper/commons-logging/";>JCL (Apache Commons 
Logging)</a>, <a href="https://openjdk.org/jeps/264";>JPL (Java Platform 
Logging)</a> and <a href="https://github.com/jboss-logging/jboss-logging";>JBoss 
Logging</a> are major logging APIs.</p>
 </dd>
 </dl>
 </div>
@@ -313,7 +313,7 @@ Log4j API, <a href="https://www.slf4j.org/";>SLF4J</a>, <a 
href="https://docs.ora
 <dt class="hdlist1">Logging implementation</dt>
 <dd>
 <p>A logging implementation is only required at runtime and can be changed 
without the need to recompile your software.
-Log4j Core, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a href="https://logback.qos.ch/";>Logback</a> are the most 
well-known logging implementations.</p>
+Log4j Core, <a 
href="https://docs.oracle.com/en/java/javase/17/core/java-logging-overview.html";>JUL
 (Java Logging)</a>, <a href="https://logback.qos.ch";>Logback</a> are the most 
well-known logging implementations.</p>
 </dd>
 </dl>
 </div>
diff --git a/plugin-reference.html b/plugin-reference.html
index a3eab372ee..ea6cc313ae 100644
--- a/plugin-reference.html
+++ b/plugin-reference.html
@@ -2567,12 +2567,7 @@ This attribute is ignored if <code>immediateFlush</code> 
is set to <code>true</c
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>Property</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code><a 
href="#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-config-Property">Property</a>?</code></p></td>
-<td class="tableblock halign-left valign-top"><div class="content"><div 
class="paragraph">
-<p>A generic list of key/value properties</p>
-</div>
-<div class="paragraph">
-<p>The meaning of these properties depends on the component.</p>
-</div></div></td>
+<td class="tableblock halign-left valign-top"><div class="content"></div></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"></td>
diff --git a/sitemap.xml b/sitemap.xml
index 5a2f85ef4d..8c1bc879cc 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -2,194 +2,194 @@
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/articles.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/development.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/download.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/faq.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/hibernate.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/index.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/javadoc.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/log4j-docker.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/log4j-flume-ng.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/log4j-jpl.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/log4j-jul.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/log4j-slf4j-impl.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/log4j-slf4j2-impl.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 
<loc>https://logging.apache.org/log4j/3.x/log4j-spring-cloud-config-client.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/log4j-to-jul.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/log4j-to-slf4j.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/api.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/appenders.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/architecture.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/async.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/cloud.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/config-intro.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/configuration.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/customconfig.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/dependencyinjection.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/extending.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/filters.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/garbagefree.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/getting-started.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/index.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/installation.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/jmx.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 
<loc>https://logging.apache.org/log4j/3.x/manual/json-template-layout.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/layouts.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/logsep.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/lookups.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/migration.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/pattern-layout.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/performance.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/plugins.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/scripts.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/systemproperties.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/manual/usage.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/migrate-from-logback.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/migrate-from-slf4j.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/plugin-reference.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/release-notes.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/3.x/thanks.html</loc>
-<lastmod>2024-06-19T12:59:45.857Z</lastmod>
+<lastmod>2024-06-19T15:03:38.419Z</lastmod>
 </url>
 </urlset>

Reply via email to