This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch main-site-stg-out
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/main-site-stg-out by this push:
new 67dcc0eeec Add website content generated from
`1b46af09e808d7265bc4e4e8a90ff8eca7c7f139`
67dcc0eeec is described below
commit 67dcc0eeecc5410471a6100f4df2592a12c209ec
Author: ASF Logging Services RM <[email protected]>
AuthorDate: Fri Mar 21 08:22:51 2025 +0000
Add website content generated from
`1b46af09e808d7265bc4e4e8a90ff8eca7c7f139`
---
...ag-0c23746e246efa4a462049e2adc4b0349185aa77.svg | 1 -
...ag-2158b7cc88b372c32a9592f8cdbc1cc926bb8b80.svg | 1 -
...ag-35cc4e8101ffe76d0edc44ed334a6273018dc51b.svg | 1 -
...ag-4d55aeb99a0ae8707b4121b1f76e9544af16b3c4.svg | 1 -
...ag-5c97f284d82478c0499cab16fe90893de781b11f.svg | 1 -
...ag-768e5e02508ea736d8901892b519a6d3a7a770ab.svg | 1 -
...ag-a15d9b3aaacbf863f81fe0dcb0ed21346b6c46ed.svg | 1 -
...ag-d5122741a680d765fa3170a444015b615a1fdafd.svg | 1 -
manual/appenders/rolling-file.html | 134 ++++++++++++++++++++-
manual/filters.html | 97 +++++++++++++--
manual/installation.html | 49 +++++++-
manual/lookups.html | 69 ++++++++++-
manual/systemproperties.html | 31 +++++
release-notes.html | 12 +-
sitemap.xml | 100 +++++++--------
15 files changed, 415 insertions(+), 85 deletions(-)
diff --git a/_images/diag-0c23746e246efa4a462049e2adc4b0349185aa77.svg
b/_images/diag-0c23746e246efa4a462049e2adc4b0349185aa77.svg
deleted file mode 100644
index 4c2dd6a5f5..0000000000
--- a/_images/diag-0c23746e246efa4a462049e2adc4b0349185aa77.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
contentStyleType="text/css" height="405px" preserveAspectRatio="none"
style="width:390px;height:405px;background:#FFFFFF;" version="1.1" viewBox="0 0
390 405" width="390px" zoomAndPan="magnify"><defs/><g><ellipse cx="210" cy="20"
fill="#222222" rx="10" ry="10" style="stroke:#222222;stroke-width:1.0;"/><rect
fill="#F1F1F1" height="33.9688" rx="12.5" r [...]
\ No newline at end of file
diff --git a/_images/diag-2158b7cc88b372c32a9592f8cdbc1cc926bb8b80.svg
b/_images/diag-2158b7cc88b372c32a9592f8cdbc1cc926bb8b80.svg
deleted file mode 100644
index ebf1b851eb..0000000000
--- a/_images/diag-2158b7cc88b372c32a9592f8cdbc1cc926bb8b80.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
contentStyleType="text/css" height="417px" preserveAspectRatio="none"
style="width:442px;height:417px;background:#FFFFFF;" version="1.1" viewBox="0 0
442 417" width="442px" zoomAndPan="magnify"><defs/><g><ellipse cx="215.75"
cy="20" fill="#222222" rx="10" ry="10"
style="stroke:#222222;stroke-width:1.0;"/><rect fill="none" height="270.3628"
style="str [...]
\ No newline at end of file
diff --git a/_images/diag-35cc4e8101ffe76d0edc44ed334a6273018dc51b.svg
b/_images/diag-35cc4e8101ffe76d0edc44ed334a6273018dc51b.svg
deleted file mode 100644
index 881ad85f71..0000000000
--- a/_images/diag-35cc4e8101ffe76d0edc44ed334a6273018dc51b.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
contentStyleType="text/css" height="226px" preserveAspectRatio="none"
style="width:771px;height:226px;background:#FFFFFF;" version="1.1" viewBox="0 0
771 226" width="771px" zoomAndPan="magnify"><defs/><g><!--class initial--><g
id="elem_initial"><rect codeLine="1" fill="#F1F1F1" height="64.2969"
id="initial" rx="2.5" ry="2.5" style="stroke:#181818;str [...]
\ No newline at end of file
diff --git a/_images/diag-4d55aeb99a0ae8707b4121b1f76e9544af16b3c4.svg
b/_images/diag-4d55aeb99a0ae8707b4121b1f76e9544af16b3c4.svg
deleted file mode 100644
index 230ea88820..0000000000
--- a/_images/diag-4d55aeb99a0ae8707b4121b1f76e9544af16b3c4.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
contentStyleType="text/css" height="424px" preserveAspectRatio="none"
style="width:281px;height:424px;background:#FFFFFF;" version="1.1" viewBox="0 0
281 424" width="281px" zoomAndPan="magnify"><defs/><g><ellipse cx="128.5"
cy="20" fill="#222222" rx="10" ry="10"
style="stroke:#222222;stroke-width:1.0;"/><rect fill="#F1F1F1" height="33.9688"
rx="12.5" [...]
\ No newline at end of file
diff --git a/_images/diag-5c97f284d82478c0499cab16fe90893de781b11f.svg
b/_images/diag-5c97f284d82478c0499cab16fe90893de781b11f.svg
deleted file mode 100644
index 0460e96382..0000000000
--- a/_images/diag-5c97f284d82478c0499cab16fe90893de781b11f.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
contentStyleType="text/css" height="408px" preserveAspectRatio="none"
style="width:325px;height:408px;background:#FFFFFF;" version="1.1" viewBox="0 0
325 408" width="325px" zoomAndPan="magnify"><defs/><g><!--class
StrSubstitutor--><g id="elem_StrSubstitutor"><rect codeLine="1" fill="#F1F1F1"
height="96.8906" id="StrSubstitutor" rx="2.5" ry="2.5" styl [...]
\ No newline at end of file
diff --git a/_images/diag-768e5e02508ea736d8901892b519a6d3a7a770ab.svg
b/_images/diag-768e5e02508ea736d8901892b519a6d3a7a770ab.svg
deleted file mode 100644
index 1e0909caa2..0000000000
--- a/_images/diag-768e5e02508ea736d8901892b519a6d3a7a770ab.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
contentStyleType="text/css" height="143px" preserveAspectRatio="none"
style="width:771px;height:143px;background:#FFFFFF;" version="1.1" viewBox="0 0
771 143" width="771px" zoomAndPan="magnify"><defs/><g><!--class initial--><g
id="elem_initial"><rect codeLine="1" fill="#F1F1F1" height="64.2969"
id="initial" rx="2.5" ry="2.5" style="stroke:#181818;str [...]
\ No newline at end of file
diff --git a/_images/diag-a15d9b3aaacbf863f81fe0dcb0ed21346b6c46ed.svg
b/_images/diag-a15d9b3aaacbf863f81fe0dcb0ed21346b6c46ed.svg
deleted file mode 100644
index 673dd699c8..0000000000
--- a/_images/diag-a15d9b3aaacbf863f81fe0dcb0ed21346b6c46ed.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
contentStyleType="text/css" height="275px" preserveAspectRatio="none"
style="width:281px;height:275px;background:#FFFFFF;" version="1.1" viewBox="0 0
281 275" width="281px" zoomAndPan="magnify"><defs/><g><ellipse cx="137.5"
cy="20" fill="#222222" rx="10" ry="10"
style="stroke:#222222;stroke-width:1.0;"/><rect fill="#F1F1F1" height="33.9688"
rx="12.5" [...]
\ No newline at end of file
diff --git a/_images/diag-d5122741a680d765fa3170a444015b615a1fdafd.svg
b/_images/diag-d5122741a680d765fa3170a444015b615a1fdafd.svg
deleted file mode 100644
index 7d4b4be182..0000000000
--- a/_images/diag-d5122741a680d765fa3170a444015b615a1fdafd.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
contentStyleType="text/css" height="226px" preserveAspectRatio="none"
style="width:771px;height:226px;background:#FFFFFF;" version="1.1" viewBox="0 0
771 226" width="771px" zoomAndPan="magnify"><defs/><g><!--class initial--><g
id="elem_initial"><rect codeLine="1" fill="#F1F1F1" height="64.2969"
id="initial" rx="2.5" ry="2.5" style="stroke:#181818;str [...]
\ No newline at end of file
diff --git a/manual/appenders/rolling-file.html
b/manual/appenders/rolling-file.html
index a829fc41b9..962c778795 100644
--- a/manual/appenders/rolling-file.html
+++ b/manual/appenders/rolling-file.html
@@ -1552,9 +1552,50 @@ It is <strong>not</strong> the default strategy of Log4j
2.</p>
<div class="paragraph">
<p>Assuming <code>min="1"</code> and <code>max="3"</code> the rotation of the
log files is represented in the graph below:</p>
</div>
-<div class="imageblock kroki">
+<div class="literalblock kroki-error">
<div class="content">
-<img src="../../_images/diag-d5122741a680d765fa3170a444015b615a1fdafd.svg"
alt="Diagram">
+<pre>@startuml
+class "Initial status" as initial {
+ <color:green>app.log</color>
+}
+class "1st rollover" as first {
+ <color:green>app.log</color>
+ app.1.log
+}
+class "2nd rollover" as second {
+ <color:green>app.log</color>
+ app.1.log
+ app.2.log
+}
+class "3rd rollover" as third {
+ <color:green>app.log</color>
+ app.1.log
+ app.2.log
+ app.3.log
+}
+class "4th rollover" as fourth {
+ <color:green>app.log</color>
+ app.1.log
+ app.2.log
+ app.3.log
+}
+
+object "Delete file" as delete
+
+initial::app.log -> first::app.1.log
+
+first::app.log -> second::app.1.log
+first::app.1.log -> second::app.2.log
+
+second::app.log -> third::app.1.log
+second::app.1.log -> third::app.2.log
+second::app.2.log -> third::app.3.log
+
+third::app.log -> fourth::app.1.log
+third::app.1.log -> fourth::app.2.log
+third::app.2.log -> fourth::app.3.log
+third::app.3.log -[#red]-> delete
+@enduml</pre>
</div>
</div>
</dd>
@@ -1582,9 +1623,50 @@ It is <strong>not</strong> the default strategy of Log4j
2.</p>
<div class="paragraph">
<p>Assuming <code>min="1"</code> and <code>max="3"</code> the rotation of the
log files is represented in the graph below:</p>
</div>
-<div class="imageblock kroki">
+<div class="literalblock kroki-error">
<div class="content">
-<img src="../../_images/diag-35cc4e8101ffe76d0edc44ed334a6273018dc51b.svg"
alt="Diagram">
+<pre>@startuml
+class "Initial status" as initial {
+ <color:green>app.log</color>
+}
+class "1st rollover" as first {
+ <color:green>app.log</color>
+ app.1.log
+}
+class "2nd rollover" as second {
+ <color:green>app.log</color>
+ app.1.log
+ app.2.log
+}
+class "3rd rollover" as third {
+ <color:green>app.log</color>
+ app.1.log
+ app.2.log
+ app.3.log
+}
+class "4th rollover" as fourth {
+ <color:green>app.log</color>
+ app.1.log
+ app.2.log
+ app.3.log
+}
+
+object "Delete file" as delete
+
+initial::app.log -> first::app.1.log
+
+first::app.log -> second::app.2.log
+first::app.1.log -> second::app.1.log
+
+second::app.log -> third::app.3.log
+second::app.1.log -> third::app.1.log
+second::app.2.log -> third::app.2.log
+
+third::app.log -> fourth::app.3.log
+third::app.1.log -[#red]-> delete
+third::app.2.log -> fourth::app.1.log
+third::app.3.log -> fourth::app.2.log
+@enduml</pre>
</div>
</div>
</dd>
@@ -1597,9 +1679,49 @@ It is <strong>not</strong> the default strategy of Log4j
2.</p>
<div class="paragraph">
<p>Using the <code>nomax</code> strategy no files will ever be deleted and
newer archive files will be assigned increasing index numbers, starting from
<code>min</code>.</p>
</div>
-<div class="imageblock kroki">
+<div class="literalblock kroki-error">
<div class="content">
-<img src="../../_images/diag-768e5e02508ea736d8901892b519a6d3a7a770ab.svg"
alt="Diagram">
+<pre>@startuml
+class "Initial status" as initial {
+ <color:green>app.log</color>
+}
+class "1st rollover" as first {
+ <color:green>app.log</color>
+ app.1.log
+}
+class "2nd rollover" as second {
+ <color:green>app.log</color>
+ app.1.log
+ app.2.log
+}
+class "3rd rollover" as third {
+ <color:green>app.log</color>
+ app.1.log
+ app.2.log
+ app.3.log
+}
+class "4th rollover" as fourth {
+ <color:green>app.log</color>
+ app.1.log
+ app.2.log
+ app.3.log
+ app.4.log
+}
+
+initial::app.log -> first::app.1.log
+
+first::app.log -> second::app.2.log
+first::app.1.log -> second::app.1.log
+
+second::app.log -> third::app.3.log
+second::app.1.log -> third::app.1.log
+second::app.2.log -> third::app.2.log
+
+third::app.log -> fourth::app.4.log
+third::app.1.log -> fourth::app.1.log
+third::app.2.log -> fourth::app.2.log
+third::app.3.log -> fourth::app.3.log
+@enduml</pre>
</div>
</div>
</dd>
diff --git a/manual/filters.html b/manual/filters.html
index 51e6f253cf..a2d646c922 100644
--- a/manual/filters.html
+++ b/manual/filters.html
@@ -401,9 +401,31 @@ e.g., log event creation, population of context data,
formatting, transfer throu
</div>
<div class="sect2">
<h3 id="logger-stage"><a class="anchor" href="#logger-stage"></a>1.
<code>Logger</code> stage</h3>
-<div class="imageblock kroki">
+<div class="literalblock kroki-error">
<div class="content">
-<img src="../_images/diag-2158b7cc88b372c32a9592f8cdbc1cc926bb8b80.svg"
alt="Diagram">
+<pre>@startuml
+start
+group Logger
+
+:A Logger method;
+
+switch (Apply global filter)
+case (DENY)
+ #pink:Discard;
+ detach
+case (ACCEPT)
+case (NEUTRAL)
+ if (Is less severe than logger level?) then (yes)
+ #pink:Discard;
+ detach
+ else (no)
+ ' The label improves spacing
+ label a1
+ endif
+endswitch
+end group
+:Create LogEvent;
+stop</pre>
</div>
</div>
<div class="paragraph">
@@ -475,9 +497,29 @@ or
</div>
<div class="sect2">
<h3 id="logger-config-stage"><a class="anchor"
href="#logger-config-stage"></a>2. <code>LoggerConfig</code> stage</h3>
-<div class="imageblock kroki">
+<div class="literalblock kroki-error">
<div class="content">
-<img src="../_images/diag-4d55aeb99a0ae8707b4121b1f76e9544af16b3c4.svg"
alt="Diagram">
+<pre>@startuml
+start
+:LogEvent;
+
+group LoggerConfig
+repeat
+
+:LoggerConfig#log();
+
+if (Apply logger filter) then (DENY)
+ #pink:Discard;
+ detach
+else (not DENY)
+ ' The label improves spacing
+ label a1
+endif
+repeat while (Go to parent logger?) is (yes)
+-> no;
+end group
+stop
+@enduml</pre>
</div>
</div>
<div class="paragraph">
@@ -492,9 +534,33 @@ until it reaches the logger that references the chosen
appender.</p>
</div>
<div class="sect2">
<h3 id="appender-control-stage"><a class="anchor"
href="#appender-control-stage"></a>3. <code>AppenderControl</code> stage</h3>
-<div class="imageblock kroki">
+<div class="literalblock kroki-error">
<div class="content">
-<img src="../_images/diag-0c23746e246efa4a462049e2adc4b0349185aa77.svg"
alt="Diagram">
+<pre>@startuml
+start
+:LogEvent;
+
+group AppenderControl
+
+:AppenderControl#callAppender();
+
+if (Is less severe then appender reference level?) then (yes)
+ #pink:Discard;
+ detach
+else (no)
+ ' The label improves spacing
+ label a2
+endif
+if (Apply appender reference filter) then (DENY)
+ #pink:Discard;
+ detach
+else (not DENY)
+ ' The label improves spacing
+ label a1
+endif
+end group
+stop
+@enduml</pre>
</div>
</div>
<div class="paragraph">
@@ -515,9 +581,24 @@ of the appender reference.</p>
</div>
<div class="sect2">
<h3 id="appender-stage"><a class="anchor" href="#appender-stage"></a>4.
<code>Appender</code> stage (optional)</h3>
-<div class="imageblock kroki">
+<div class="literalblock kroki-error">
<div class="content">
-<img src="../_images/diag-a15d9b3aaacbf863f81fe0dcb0ed21346b6c46ed.svg"
alt="Diagram">
+<pre>@startuml
+start
+:LogEvent;
+
+group Appender
+
+if (Apply appender filter) then (DENY)
+ #pink:Discard;
+ detach
+else (not DENY)
+ ' The label improves spacing
+ label a1
+endif
+end group
+#palegreen:Appender#append();
+@enduml</pre>
</div>
</div>
<div class="paragraph">
diff --git a/manual/installation.html b/manual/installation.html
index 74bdc2b5fc..e3a35d5726 100644
--- a/manual/installation.html
+++ b/manual/installation.html
@@ -405,11 +405,54 @@ In this case, you need to install <code>log4j-core</code>
and <code>log4j-slf4j2
<div class="paragraph">
<p>To make things a little bit more tangible, consider the following
visualization of a typical Log4j Core installation with bridges for an
application:</p>
</div>
-<div class="imageblock kroki">
+<div class="literalblock kroki-error">
+<div class="title">Visualization of a typical Log4j Core installation with
SLF4J, JUL, and JPL bridges.</div>
<div class="content">
-<img src="../_images/diag-1fd758c2554d79996565796f77cf0f8dc6b3bca2.svg"
alt="Visualization of a typical Log4j Core installation with SLF4J, JUL, and
JPL bridges.">
+<pre>/-----------------------------------------------------------------------------------\
+|
|
+| +------------+ +----------+
+----------+ |
+| | | | | |
| |
+| | v | v |
v |
+| +-----+-----+ +---------+ +---------+ +----+----+ +-------+ +----+----+
+-------+ |
+| | | |{d}c1FF | | | | | |{d}c1FF| | |
|{d}c1FF| |
+| |Application| |Log4j API| |Library 1| |Library 2| | SLF4J | |Library 3| |
JUL | |
+| | | | | | | | | | | | | |
| |
+| +-----------+ +--+------+ +----+----+ +---------+ +---+---+ +---------+
+---+---+ |
+| : ^ | :
: |
+| | | | |
| |
+| Compile time | | | |
| |
+\------------------|---|---------|----------------------|---------------------|-----/
+ | | | | |
+ | | | /-----/ /-----------/
+ | | | | |
+ /----------/ \------+--|----------+-----|---------\ |
+ | | | | | | |
+/-------|---------------------|--|----------|-----|---------|-----|-----------------\
+| | | | | | | |
Runtime |
+| v : | : v : v
|
+| +----------+ +-----+------+ +----+---------+ +---+--------+
|
+| |cGRE | |cYEL | |cYEL | |cYEL |
|
+| |Log4j Core| |JPL to Log4j| |SLF4J to Log4j| |JUL to Log4j|
|
+| | | | | | | | |
|
+| +----------+ +------------+ +--------------+ +------------+
|
+| |log4j2.xml| ^ |
|
+| +----------+ | |
|
+| | |
|
+| | |
|
+| /-------------+--|--/
|
+| | | |
|
+|
+----------+-------------|--|---------------------------------------------------+
|
+| |JRE v :
| |
+| | +----+--+
| |
+| | |{d}c1FF|
| |
+| | | JPL |
| |
+| | | |
| |
+| | +-------+
| |
+| |
| |
+|
+-------------------------------------------------------------------------------+
|
+|
|
+\-----------------------------------------------------------------------------------/</pre>
</div>
-<div class="title">Figure 1. Visualization of a typical Log4j Core
installation with SLF4J, JUL, and JPL bridges.</div>
</div>
</div>
</div>
diff --git a/manual/lookups.html b/manual/lookups.html
index b2d0c8db60..ed939997d7 100644
--- a/manual/lookups.html
+++ b/manual/lookups.html
@@ -307,11 +307,33 @@
<div class="paragraph">
<p>Log4j Core provides a flexible and extensible property substitution
system.</p>
</div>
-<div id="StrSubstitutor-diagram" class="imageblock kroki">
+<div id="StrSubstitutor-diagram" class="literalblock kroki-error">
+<div class="title">Property substitution system</div>
<div class="content">
-<img src="../_images/diag-5c97f284d82478c0499cab16fe90893de781b11f.svg"
alt="Property substitution system">
+<pre>@startuml
+class StrSubstitutor #line.bold {
+ Interpolator interpolator
+ String replace(String input)
+ String replace(LogEvent event, String input)
+}
+
+StrSubstitutor --> Interpolator
+
+class Interpolator {
+ StrLookup[] lookups
+ String lookup(String key)
+ String lookup(LogEvent event, String key)
+}
+
+Interpolator --> "0..*" StrLookup
+
+class StrLookup {
+ String lookup(String input)
+ String lookup(LogEvent event, String key)
+}
+
+@enduml</pre>
</div>
-<div class="title">Figure 1. Property substitution system</div>
</div>
<div class="paragraph">
<p>The property substitution system is composed of these elements:</p>
@@ -2033,8 +2055,21 @@ represented by this ServletContext is based on.</p></td>
<div class="sect1">
<h2 id="third-party"><a class="anchor" href="#third-party"></a>Third-party
lookups</h2>
<div class="sectionbody">
+<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>The following additional lookups are available from third-party vendors:</p>
+<p>These lookups are provided by <strong>third-party</strong> vendors and are
not maintained by the
+<a href="https://logging.apache.org">Apache Logging Services</a>
+(Log4j, Log4cxx, Log4net) project.</p>
+</div>
+</td>
+</tr>
+</table>
</div>
<div class="sect2">
<h3 id="KubernetesLookup"><a class="anchor"
href="#KubernetesLookup"></a>Kubernetes Lookup</h3>
@@ -2083,6 +2118,32 @@ Kubernetes Lookup is distributed as a part of
Fabric8’s Kubernetes Client,
for more details.</p>
</div>
</div>
+<div class="sect2">
+<h3 id="TomcatLookup"><a class="anchor" href="#TomcatLookup"></a>Tomcat
Lookup</h3>
+<table class="tableblock frame-all grid-all stretch">
+<colgroup>
+<col style="width: 20%;">
+<col style="width: 80%;">
+</colgroup>
+<tbody>
+<tr>
+<th class="tableblock halign-left valign-top"><p
class="tableblock">Syntax</p></th>
+<td class="tableblock halign-left valign-top"><p
class="tableblock"><code>tomcat:<key></code></p>
+<p class="tableblock">where <code>key</code> is one of the
+<a
href="https://oss.copernik.eu/tomcat/3.x/components/log4j-tomcat#TomcatLookup-keys">supported
Tomcat Lookup keys</a></p></td>
+</tr>
+<tr>
+<th class="tableblock halign-left valign-top"><p
class="tableblock">Dependency</p></th>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a
href="https://oss.copernik.eu/tomcat/3.x/components/log4j-tomcat#installation"><code>eu.copernik:log4j-tomcat</code></a></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>The Tomcat Lookup allows retrieving the names of the currently active
Tomcat engine, host and application context.
+See
+<a
href="https://oss.copernik.eu/tomcat/3.x/components/log4j-tomcat#TomcatLookup">Copernik.eu
Tomcat Lookup documentation</a> for more details.</p>
+</div>
+</div>
</div>
</div>
<div class="sect1">
diff --git a/manual/systemproperties.html b/manual/systemproperties.html
index bfe7a8dd35..c6006fa623 100644
--- a/manual/systemproperties.html
+++ b/manual/systemproperties.html
@@ -747,6 +747,37 @@ for details.</p>
</dd>
</dl>
</div>
+<div class="paragraph">
+<p>There are also third-party context selector implementations:</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>These context selectors are provided by <strong>third-party</strong>
vendors and are not maintained by the
+<a href="https://logging.apache.org">Apache Logging Services</a>
+(Log4j, Log4cxx, Log4net) project.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><a
href="https://oss.copernik.eu/tomcat/3.x/components/log4j-tomcat#TomcatContextSelector"><code>eu.copernik.log4j.tomcat.TomcatContextSelector</code></a></dt>
+<dd>
+<p>Selects the currently active Tomcat web application and creates synchronous
loggers.</p>
+</dd>
+<dt class="hdlist1"><a
href="https://oss.copernik.eu/tomcat/3.x/components/log4j-tomcat#TomcatContextSelector"><code>eu.copernik.log4j.tomcat.TomcatAsyncContextSelector</code></a></dt>
+<dd>
+<p>Selects the currently active Tomcat web application and creates <a
href="async.html" class="xref page">asynchronous loggers</a>.</p>
+</dd>
+</dl>
+</div>
</div>
<div class="sect3">
<h4 id="log4j.loggerContext.shutdownHookEnabled"><a class="anchor"
href="#log4j.loggerContext.shutdownHookEnabled"></a><code>log4j.loggerContext.shutdownHookEnabled</code></h4>
diff --git a/release-notes.html b/release-notes.html
index c742589f1e..c4b012ff7f 100644
--- a/release-notes.html
+++ b/release-notes.html
@@ -311,7 +311,7 @@
<div class="ulist">
<ul>
<li>
-<p>Update <code>ch.qos.logback:logback-classic</code> to version
<code>1.5.17</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3495">3495</a>)</p>
+<p>Update <code>ch.qos.logback:logback-classic</code> to version
<code>1.5.18</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3550">3550</a>)</p>
</li>
<li>
<p>Update <code>ch.qos.logback:logback-core</code> to version
<code>1.5.17</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3493">3493</a>)</p>
@@ -338,7 +338,7 @@
<p>Update <code>com.google.code.gson:gson</code> to version
<code>2.12.1</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3429">3429</a>)</p>
</li>
<li>
-<p>Update <code>com.google.guava:guava</code> to version
<code>33.4.0-jre</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3306">3306</a>)</p>
+<p>Update <code>com.google.guava:guava</code> to version
<code>33.4.5-jre</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3554">3554</a>)</p>
</li>
<li>
<p>Update <code>commons-codec:commons-codec</code> to version
<code>1.18.0</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3419">3419</a>)</p>
@@ -374,7 +374,7 @@
<p>Update <code>org.apache.commons:commons-pool2</code> to version
<code>2.12.1</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3420">3420</a>)</p>
</li>
<li>
-<p>Update <code>org.apache.groovy:groovy-bom</code> to version
<code>4.0.25</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3413">3413</a>)</p>
+<p>Update <code>org.apache.groovy:groovy-bom</code> to version
<code>4.0.26</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3507">3507</a>)</p>
</li>
<li>
<p>Update <code>org.apache.logging.log4j:log4j-api</code> to version
<code>2.24.3</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3292">3292</a>)</p>
@@ -401,7 +401,7 @@
<p>Update <code>org.junit:junit-bom</code> to version <code>5.12.1</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3540">3540</a>)</p>
</li>
<li>
-<p>Update <code>org.mockito:mockito-bom</code> to version <code>5.16.0</code>
(<a href="https://github.com/apache/logging-log4j2/pull/3520">3520</a>)</p>
+<p>Update <code>org.mockito:mockito-bom</code> to version <code>5.16.1</code>
(<a href="https://github.com/apache/logging-log4j2/pull/3547">3547</a>)</p>
</li>
<li>
<p>Update <code>org.mongodb:bson</code> to version <code>5.3.1</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3410">3410</a>)</p>
@@ -431,10 +431,10 @@
<p>Update <code>org.springframework.boot:spring-boot-autoconfigure</code> to
version <code>3.4.3</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3481">3481</a>)</p>
</li>
<li>
-<p>Update <code>org.springframework.cloud:spring-cloud-context</code> to
version <code>4.2.0</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3268">3268</a>)</p>
+<p>Update <code>org.springframework.cloud:spring-cloud-context</code> to
version <code>4.2.1</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3557">3557</a>)</p>
</li>
<li>
-<p>Update <code>org.springframework:spring-framework-bom</code> to version
<code>6.2.4</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3533">3533</a>)</p>
+<p>Update <code>org.springframework:spring-framework-bom</code> to version
<code>6.2.5</code> (<a
href="https://github.com/apache/logging-log4j2/pull/3556">3556</a>)</p>
</li>
<li>
<p>Update <code>org.wiremock:wiremock</code> to version <code>3.12.1</code>
(<a href="https://github.com/apache/logging-log4j2/pull/3522">3522</a>)</p>
diff --git a/sitemap.xml b/sitemap.xml
index 5d9b06b6cf..47bd5d36c0 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -2,202 +2,202 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://logging.apache.org/log4j/3.x/articles.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/components.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/development.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/download.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/faq.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/hibernate.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/index.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/javadoc.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/log4j-jul.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/log4j-slf4j-impl.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/log4j-slf4j2-impl.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/log4j-spring-cloud-config-client.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/log4j-to-jul.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/api.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/appenders.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/appenders/database.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/appenders/delegating.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/appenders/file.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/appenders/message-queue.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/appenders/network.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/appenders/rolling-file.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/architecture.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/async.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/cloud.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/config-intro.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/configuration.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/customconfig.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/dependencyinjection.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/extending.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/filters.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/garbagefree.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/getting-started.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/implementation.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/index.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/installation.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/json-template-layout.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/layouts.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/lookups.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/pattern-layout.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/performance.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/plugins.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/scripts.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/systemproperties.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/manual/usage.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/migrate-from-log4j2.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/migrate-from-logback.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/migrate-from-slf4j.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/plugin-reference.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/release-notes.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/3.x/thanks.html</loc>
-<lastmod>2025-03-17T11:54:41.417Z</lastmod>
+<lastmod>2025-03-21T08:22:25.753Z</lastmod>
</url>
</urlset>