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 b29aac4839 Add website content generated from 
`be863cf901b643e754efee2216d5b13f3ae208f9`
b29aac4839 is described below

commit b29aac483982f6e5f80924dbb88288ab1ac5872b
Author: ASF Logging Services RM <[email protected]>
AuthorDate: Wed Jun 19 12:53:17 2024 +0000

    Add website content generated from 
`be863cf901b643e754efee2216d5b13f3ae208f9`
---
 manual/garbagefree.html          |   4 +-
 manual/json-template-layout.html | 254 ++++++++++++++++++++++++++++++++++++---
 manual/layouts.html              |   6 -
 manual/lookups.html              |   2 +-
 manual/pattern-layout.html       |  81 +++++++++++--
 plugin-reference.html            |  78 ++++++------
 sitemap.xml                      | 120 +++++++++---------
 7 files changed, 409 insertions(+), 136 deletions(-)

diff --git a/manual/garbagefree.html b/manual/garbagefree.html
index 76d5085b03..28a1f1d3f7 100644
--- a/manual/garbagefree.html
+++ b/manual/garbagefree.html
@@ -434,7 +434,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>
@@ -1031,7 +1031,7 @@ The <code>Unbox.box(primitive)</code> methods write 
directly into a <code>String
 <p><a href="scoped-context.html" class="xref page">Scoped Context</a> is not 
garbage-free.</p>
 </li>
 <li>
-<p>Logging very large messages (i.e., more than <a 
href="#log4j2.maxReusableMsgSize[<code>log4j2.maxReusableMsgSize</code>] 
characters">which defaults to 518), when all loggers are 
xref:manual/async.adoc,asynchronous loggers</a>, will cause the internal 
<code>StringBuilder</code> in the
+<p>Logging very large messages (i.e., more than <a 
href="#log4j2.maxReusableMsgSize"><code>log4j2.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
 <code>RingBuffer</code> to be trimmed back to their configured maximum 
size.</p>
 </li>
 <li>
diff --git a/manual/json-template-layout.html b/manual/json-template-layout.html
index bbbe436a25..82a0d77a8f 100644
--- a/manual/json-template-layout.html
+++ b/manual/json-template-layout.html
@@ -323,7 +323,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>
@@ -935,7 +935,7 @@ That is,</p>
     "key00002": "value00002",
     "key00003": "value00003",
     // ...
-    "key16384": "value16384",
+    "key16384": "value16384"
   }
 }</code></pre>
 </div>
@@ -1061,7 +1061,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/2.x/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/2.x/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
@@ -1085,7 +1085,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/2.x/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/2.x/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",
@@ -1116,7 +1116,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/2.x/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/2.x/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"
@@ -1137,7 +1137,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/2.x/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/2.x/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
@@ -2135,6 +2135,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">
@@ -2657,6 +2660,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/2.x/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/2.x/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/2.x/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/2.x/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="recycling-strategy"><a class="anchor" 
href="#recycling-strategy"></a>Recycling strategy</h2>
 <div class="sectionbody">
 <div class="paragraph">
@@ -3177,18 +3402,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>
@@ -3223,12 +3436,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 14bc2f4ce1..826640d85a 100644
--- a/manual/layouts.html
+++ b/manual/layouts.html
@@ -1366,9 +1366,6 @@ It defaults to <code>false</code>, in which case the 
thread context map is inclu
 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">
@@ -1510,9 +1507,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>
diff --git a/manual/lookups.html b/manual/lookups.html
index 26d30c699c..9ff1f10387 100644
--- a/manual/lookups.html
+++ b/manual/lookups.html
@@ -957,7 +957,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 c3a3a84087..33435f7b60 100644
--- a/manual/pattern-layout.html
+++ b/manual/pattern-layout.html
@@ -323,7 +323,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">
@@ -2701,13 +2701,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>
@@ -2719,6 +2713,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/plugin-reference.html b/plugin-reference.html
index 1bf88da3e6..2445c222e6 100644
--- a/plugin-reference.html
+++ b/plugin-reference.html
@@ -1444,7 +1444,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>
@@ -7405,7 +7405,7 @@ However, configurations set up for the 2.0 version of the 
JMS appenders will sti
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code><a 
href="#org-apache-logging-log4j_log4j-couchdb_org-apache-logging-log4j-core-appender-nosql-NoSqlProvider">NoSqlProvider</a>?</code></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><code><a 
href="#org-apache-logging-log4j_log4j-mongodb_org-apache-logging-log4j-core-appender-nosql-NoSqlProvider">NoSqlProvider</a>?</code></p></td>
 <td class="tableblock halign-left valign-top"><div class="content"><div 
class="paragraph">
 <p>Sets the provider.</p>
 </div></div></td>
@@ -16127,10 +16127,10 @@ Supports Lookup expressions.</p>
 <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 
class="paragraph">
-<p>If "true", includes the stacktrace of any Throwable in the generated data, 
defaults to "true".</p>
+<p>If "true", includes the stacktrace of any Throwable in the generated JSON, 
defaults to "true".</p>
 </div>
 <div class="paragraph">
-<p>If "true", includes the stacktrace of any Throwable in the generated JSON, 
defaults to "true".</p>
+<p>If "true", includes the stacktrace of any Throwable in the generated data, 
defaults to "true".</p>
 </div></div></td>
 </tr>
 <tr>
@@ -17426,10 +17426,10 @@ Supports Lookup expressions.</p>
 <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 
class="paragraph">
-<p>If "true", includes the stacktrace of any Throwable in the generated data, 
defaults to "true".</p>
+<p>If "true", includes the stacktrace of any Throwable in the generated JSON, 
defaults to "true".</p>
 </div>
 <div class="paragraph">
-<p>If "true", includes the stacktrace of any Throwable in the generated JSON, 
defaults to "true".</p>
+<p>If "true", includes the stacktrace of any Throwable in the generated data, 
defaults to "true".</p>
 </div></div></td>
 </tr>
 <tr>
@@ -17625,10 +17625,10 @@ Supports Lookup expressions.</p>
 <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 
class="paragraph">
-<p>If "true", includes the stacktrace of any Throwable in the generated data, 
defaults to "true".</p>
+<p>If "true", includes the stacktrace of any Throwable in the generated JSON, 
defaults to "true".</p>
 </div>
 <div class="paragraph">
-<p>If "true", includes the stacktrace of any Throwable in the generated JSON, 
defaults to "true".</p>
+<p>If "true", includes the stacktrace of any Throwable in the generated data, 
defaults to "true".</p>
 </div></div></td>
 </tr>
 <tr>
@@ -21770,37 +21770,6 @@ toString(), or to output the value of a specific key 
within the property bundle
 <div class="sect2">
 <h3 id="org-apache-logging-log4j_log4j-couchdb"><a class="anchor" 
href="#org-apache-logging-log4j_log4j-couchdb"></a><code>log4j-couchdb</code></h3>
 <div class="sect3">
-<h4 
id="org-apache-logging-log4j_log4j-couchdb_org-apache-logging-log4j-core-appender-nosql-NoSqlProvider"><a
 class="anchor" 
href="#org-apache-logging-log4j_log4j-couchdb_org-apache-logging-log4j-core-appender-nosql-NoSqlProvider"></a><code>NoSqlProvider</code></h4>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">Class</dt>
-<dd>
-<p><code>org.apache.logging.log4j.core.appender.nosql.NoSqlProvider</code></p>
-</dd>
-<dt class="hdlist1">Provider</dt>
-<dd>
-<p><code>org.apache.logging.log4j:log4j-couchdb</code></p>
-</dd>
-</dl>
-</div>
-<div class="sect4">
-<h5 
id="org-apache-logging-log4j_log4j-couchdb_org-apache-logging-log4j-core-appender-nosql-NoSqlProvider_implementations"><a
 class="anchor" 
href="#org-apache-logging-log4j_log4j-couchdb_org-apache-logging-log4j-core-appender-nosql-NoSqlProvider_implementations"></a>Known
 implementations</h5>
-<div class="ulist">
-<ul>
-<li>
-<p><a 
href="#org-apache-logging-log4j_log4j-couchdb_org-apache-logging-log4j-couchdb-CouchDbProvider">CouchDbProvider</a></p>
-</li>
-<li>
-<p><a 
href="#org-apache-logging-log4j_log4j-mongodb_org-apache-logging-log4j-mongodb-MongoDbProvider">MongoDbProvider</a></p>
-</li>
-<li>
-<p><a 
href="#org-apache-logging-log4j_log4j-mongodb4_org-apache-logging-log4j-mongodb4-MongoDb4Provider">MongoDb4Provider</a></p>
-</li>
-</ul>
-</div>
-</div>
-</div>
-<div class="sect3">
 <h4 
id="org-apache-logging-log4j_log4j-couchdb_org-apache-logging-log4j-couchdb-CouchDbProvider"><a
 class="anchor" 
href="#org-apache-logging-log4j_log4j-couchdb_org-apache-logging-log4j-couchdb-CouchDbProvider"></a>CouchDB</h4>
 <div class="dlist">
 <dl>
@@ -23935,6 +23904,37 @@ Minimum is 1000.</p>
 <div class="sect2">
 <h3 id="org-apache-logging-log4j_log4j-mongodb"><a class="anchor" 
href="#org-apache-logging-log4j_log4j-mongodb"></a><code>log4j-mongodb</code></h3>
 <div class="sect3">
+<h4 
id="org-apache-logging-log4j_log4j-mongodb_org-apache-logging-log4j-core-appender-nosql-NoSqlProvider"><a
 class="anchor" 
href="#org-apache-logging-log4j_log4j-mongodb_org-apache-logging-log4j-core-appender-nosql-NoSqlProvider"></a><code>NoSqlProvider</code></h4>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Class</dt>
+<dd>
+<p><code>org.apache.logging.log4j.core.appender.nosql.NoSqlProvider</code></p>
+</dd>
+<dt class="hdlist1">Provider</dt>
+<dd>
+<p><code>org.apache.logging.log4j:log4j-mongodb</code></p>
+</dd>
+</dl>
+</div>
+<div class="sect4">
+<h5 
id="org-apache-logging-log4j_log4j-mongodb_org-apache-logging-log4j-core-appender-nosql-NoSqlProvider_implementations"><a
 class="anchor" 
href="#org-apache-logging-log4j_log4j-mongodb_org-apache-logging-log4j-core-appender-nosql-NoSqlProvider_implementations"></a>Known
 implementations</h5>
+<div class="ulist">
+<ul>
+<li>
+<p><a 
href="#org-apache-logging-log4j_log4j-couchdb_org-apache-logging-log4j-couchdb-CouchDbProvider">CouchDbProvider</a></p>
+</li>
+<li>
+<p><a 
href="#org-apache-logging-log4j_log4j-mongodb_org-apache-logging-log4j-mongodb-MongoDbProvider">MongoDbProvider</a></p>
+</li>
+<li>
+<p><a 
href="#org-apache-logging-log4j_log4j-mongodb4_org-apache-logging-log4j-mongodb4-MongoDb4Provider">MongoDb4Provider</a></p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+<div class="sect3">
 <h4 
id="org-apache-logging-log4j_log4j-mongodb_org-apache-logging-log4j-mongodb-MongoDbProvider"><a
 class="anchor" 
href="#org-apache-logging-log4j_log4j-mongodb_org-apache-logging-log4j-mongodb-MongoDbProvider"></a>MongoDb</h4>
 <div class="dlist">
 <dl>
diff --git a/sitemap.xml b/sitemap.xml
index 58d7e067d0..ef714a7110 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -2,242 +2,242 @@
 <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/development.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/download.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/faq.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/hibernate.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/index.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/javadoc.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/log4j-appserver.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/log4j-cassandra.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/log4j-couchdb.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/log4j-docker.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/log4j-flume-ng.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/log4j-iostreams.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/log4j-jakarta-web.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/log4j-spring-boot.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 
<loc>https://logging.apache.org/log4j/2.x/log4j-spring-cloud-config-client.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/log4j-spring-cloud-config.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/log4j-taglib.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/log4j-web.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/api.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/appenders.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/architecture.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/async.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/cloud.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/compatibility.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/config-intro.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/configuration.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/customconfig.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/customloglevels.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/eventlogging.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/extending.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/filters.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/flowtracing.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/garbagefree.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/getting-started.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/index.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/installation.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/jmx.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 
<loc>https://logging.apache.org/log4j/2.x/manual/json-template-layout.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/layouts.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/logbuilder.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/logsep.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/lookups.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/markers.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/messages.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/migration.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/pattern-layout.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/performance.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/plugins.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/resource-logger.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/scoped-context.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/scripts.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/simple-logger.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/status-logger.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/systemproperties.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/thread-context.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/manual/webapp.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/migrate-from-logback.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/migrate-from-slf4j.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/plugin-reference.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 <url>
 <loc>https://logging.apache.org/log4j/2.x/release-notes.html</loc>
-<lastmod>2024-06-19T11:54:53.525Z</lastmod>
+<lastmod>2024-06-19T12:52:56.450Z</lastmod>
 </url>
 </urlset>


Reply via email to