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>> 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"><JsonTemplateLayout
eventTemplateUri="classpath:GelfLayout.json">
<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" ->
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’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"><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>
+</JsonTemplateLayout></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:…​}</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:…​}</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>${…​}</code> variables) are not garbage-free.</p>
+<p><a href="#faq-lookups">Property substitutions</a> (that is,
<code>${…​}</code> variables) <em>might</em> not be
garbage-free.</p>
</li>
</ul>
</div>
<div class="paragraph">
-<p>Don’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>