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 d4a667980e Add website content generated from
`f345dedb2aaba25e84e03234a12666b1332a3078`
d4a667980e is described below
commit d4a667980e57de94058d93aa3615ba7f06aba4d4
Author: ASF Logging Services RM <[email protected]>
AuthorDate: Wed Oct 16 09:51:52 2024 +0000
Add website content generated from
`f345dedb2aaba25e84e03234a12666b1332a3078`
---
...ag-01168003b98f120d2f0736e5172de8e1218f189e.svg | 1 -
...ag-0c23746e246efa4a462049e2adc4b0349185aa77.svg | 1 -
...ag-2158b7cc88b372c32a9592f8cdbc1cc926bb8b80.svg | 1 -
...ag-232cdf1d44336897239fa03f6521cc730f38f32d.svg | 1 -
...ag-35cc4e8101ffe76d0edc44ed334a6273018dc51b.svg | 1 -
...ag-3f8a04c810525cc09a5e7564abf3aa14ed1f7c81.svg | 1 -
...ag-4d55aeb99a0ae8707b4121b1f76e9544af16b3c4.svg | 1 -
...ag-581e854ee8ecdb00104bac5affda10a653d8f76d.svg | 1 -
...ag-58c484caf8cd616db4f1c7ed31b51c123b5859d4.svg | 1 -
...ag-5c97f284d82478c0499cab16fe90893de781b11f.svg | 1 -
...ag-5ffe377615be9b0375b26533bbf7b10507dc946b.svg | 1 -
...ag-63d449f3bcd24cfa522a41f6e2f545416de30322.svg | 1 -
...ag-73365a4d8197b5441a98fd1d661b07760da178be.svg | 1 -
...ag-768e5e02508ea736d8901892b519a6d3a7a770ab.svg | 1 -
...ag-77a13b00749af95e3ed0eefd605a73f25d70973c.svg | 1 -
...ag-7a08e5a79432e9299cc0d9671bd39677be5618e8.svg | 1 -
...ag-892fd9dbd9ea6bece55c1d4078ae1de2edd5c689.svg | 1 -
...ag-a15d9b3aaacbf863f81fe0dcb0ed21346b6c46ed.svg | 1 -
...ag-a51b68065f249459078382aa4c61888857f01b2c.svg | 1 -
...ag-d5122741a680d765fa3170a444015b615a1fdafd.svg | 1 -
...ag-fd71b342bbb89cd55a1ddb592976b9ac26b6348e.svg | 1 -
javadoc/log4j-core/deprecated-list.html | 20 +-
javadoc/log4j-core/index-all.html | 8 +-
javadoc/log4j-core/member-search-index.js | 2 +-
.../log4j/core/appender/ConsoleAppender.html | 12 +-
.../core/appender/class-use/ConsoleAppender.html | 4 +-
.../logging/log4j/core/class-use/Filter.html | 4 +-
.../logging/log4j/core/class-use/Layout.html | 4 +-
.../logging/log4j/core/impl/package-summary.html | 2 +-
.../log4j/core/layout/PatternLayout.Builder.html | 3 +-
.../log4j/core/pattern/JAnsiTextRenderer.html | 48 +-
.../log4j/core/pattern/package-summary.html | 2 +-
.../org/apache/logging/log4j/core/util/Loader.html | 18 +-
log4j-jul.html | 58 ++-
manual/appenders.html | 128 ++---
manual/appenders/rolling-file.html | 134 ++++-
manual/architecture.html | 554 +++++++++++++++++++--
manual/filters.html | 97 +++-
manual/installation.html | 58 ++-
manual/lookups.html | 28 +-
manual/pattern-layout.html | 31 +-
manual/systemproperties.html | 45 --
migrate-from-logback.html | 58 ++-
migrate-from-slf4j.html | 58 ++-
plugin-reference.html | 12 +-
release-notes.html | 14 +
sitemap.xml | 118 ++---
47 files changed, 1174 insertions(+), 367 deletions(-)
diff --git a/_images/diag-01168003b98f120d2f0736e5172de8e1218f189e.svg
b/_images/diag-01168003b98f120d2f0736e5172de8e1218f189e.svg
deleted file mode 100644
index ee9dca5100..0000000000
--- a/_images/diag-01168003b98f120d2f0736e5172de8e1218f189e.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="278px" preserveAspectRatio="none"
style="width:781px;height:278px;background:#FFFFFF;" version="1.1" viewBox="0 0
781 278" width="781px" zoomAndPan="magnify"><defs/><g><!--cluster
LoggerContext--><g id="cluster_LoggerContext"><path d="M8.5,6 L127.5,6
A3.75,3.75 0 0 1 130,8.5 L137,28.2969 L621.5,28.2969 A2.5,2.5 0 0 [...]
\ No newline at end of file
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-232cdf1d44336897239fa03f6521cc730f38f32d.svg
b/_images/diag-232cdf1d44336897239fa03f6521cc730f38f32d.svg
deleted file mode 100644
index 253990d3c1..0000000000
--- a/_images/diag-232cdf1d44336897239fa03f6521cc730f38f32d.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="218px" preserveAspectRatio="none"
style="width:197px;height:218px;background:#FFFFFF;" version="1.1" viewBox="0 0
197 218" width="197px" zoomAndPan="magnify"><defs/><g><!--class Appender--><g
id="elem_Appender"><rect codeLine="1" fill="#F1F1F1" height="80.5938"
id="Appender" rx="2.5" ry="2.5" style="stroke:#181818; [...]
\ 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-3f8a04c810525cc09a5e7564abf3aa14ed1f7c81.svg
b/_images/diag-3f8a04c810525cc09a5e7564abf3aa14ed1f7c81.svg
deleted file mode 100644
index 19bc3dd128..0000000000
--- a/_images/diag-3f8a04c810525cc09a5e7564abf3aa14ed1f7c81.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="1022px" preserveAspectRatio="none"
style="width:1327px;height:1022px;background:#FFFFFF;" version="1.1" viewBox="0
0 1327 1022" width="1327px" zoomAndPan="magnify"><defs/><g><!--cluster c--><g
id="cluster_c"><path d="M8.5,150.89 L116.5,150.89 A3.75,3.75 0 0 1 119,153.39
L126,173.1869 L806.5,173.1869 A2.5,2.5 0 0 1 [...]
\ 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-581e854ee8ecdb00104bac5affda10a653d8f76d.svg
b/_images/diag-581e854ee8ecdb00104bac5affda10a653d8f76d.svg
deleted file mode 100644
index 13bad114d3..0000000000
--- a/_images/diag-581e854ee8ecdb00104bac5affda10a653d8f76d.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="614px" preserveAspectRatio="none"
style="width:551px;height:614px;background:#FFFFFF;" version="1.1" viewBox="0 0
551 614" width="551px" zoomAndPan="magnify"><defs/><g><!--class
Configuration--><g id="elem_Configuration"><rect codeLine="1" fill="#F1F1F1"
height="129.4844" id="Configuration" rx="2.5" ry="2.5" style= [...]
\ No newline at end of file
diff --git a/_images/diag-58c484caf8cd616db4f1c7ed31b51c123b5859d4.svg
b/_images/diag-58c484caf8cd616db4f1c7ed31b51c123b5859d4.svg
deleted file mode 100644
index cf669cbdd8..0000000000
--- a/_images/diag-58c484caf8cd616db4f1c7ed31b51c123b5859d4.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="134px" preserveAspectRatio="none"
style="width:615px;height:134px;background:#FFFFFF;" version="1.1" viewBox="0 0
615 134" width="615px" zoomAndPan="magnify"><defs/><g><rect fill="#F1F1F1"
height="36.2969" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:1.5;"
width="48" x="10" y="48.1484"/><text fill="#00000 [...]
\ 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-5ffe377615be9b0375b26533bbf7b10507dc946b.svg
b/_images/diag-5ffe377615be9b0375b26533bbf7b10507dc946b.svg
deleted file mode 100644
index ea30fa85b9..0000000000
--- a/_images/diag-5ffe377615be9b0375b26533bbf7b10507dc946b.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="489px" preserveAspectRatio="none"
style="width:917px;height:489px;background:#FFFFFF;" version="1.1" viewBox="0 0
917 489" width="917px" zoomAndPan="magnify"><defs/><g><!--class
LoggerContext--><g id="elem_LoggerContext"><rect codeLine="1" fill="#F1F1F1"
height="96.8906" id="LoggerContext" rx="2.5" ry="2.5" style=" [...]
\ No newline at end of file
diff --git a/_images/diag-63d449f3bcd24cfa522a41f6e2f545416de30322.svg
b/_images/diag-63d449f3bcd24cfa522a41f6e2f545416de30322.svg
deleted file mode 100644
index 407cf3e990..0000000000
--- a/_images/diag-63d449f3bcd24cfa522a41f6e2f545416de30322.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="754px" preserveAspectRatio="none"
style="width:549px;height:754px;background:#FFFFFF;" version="1.1" viewBox="0 0
549 754" width="549px" zoomAndPan="magnify"><defs/><g><!--class
Configuration--><g id="elem_Configuration"><rect codeLine="1" fill="#F1F1F1"
height="129.4844" id="Configuration" rx="2.5" ry="2.5" style= [...]
\ No newline at end of file
diff --git a/_images/diag-73365a4d8197b5441a98fd1d661b07760da178be.svg
b/_images/diag-73365a4d8197b5441a98fd1d661b07760da178be.svg
deleted file mode 100644
index c9b6b7b12e..0000000000
--- a/_images/diag-73365a4d8197b5441a98fd1d661b07760da178be.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="507px" preserveAspectRatio="none"
style="width:649px;height:507px;background:#FFFFFF;" version="1.1" viewBox="0 0
649 507" width="649px" zoomAndPan="magnify"><defs/><g><!--class
Configuration--><g id="elem_Configuration"><rect codeLine="1" fill="#F1F1F1"
height="129.4844" id="Configuration" rx="2.5" ry="2.5" style= [...]
\ 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-77a13b00749af95e3ed0eefd605a73f25d70973c.svg
b/_images/diag-77a13b00749af95e3ed0eefd605a73f25d70973c.svg
deleted file mode 100644
index d9566cac31..0000000000
--- a/_images/diag-77a13b00749af95e3ed0eefd605a73f25d70973c.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="442px" preserveAspectRatio="none"
style="width:298px;height:442px;background:#FFFFFF;" version="1.1" viewBox="0 0
298 442" width="298px" zoomAndPan="magnify"><defs/><g><!--class
LoggerContext--><g id="elem_LoggerContext"><rect codeLine="1" fill="#F1F1F1"
height="96.8906" id="LoggerContext" rx="2.5" ry="2.5" style=" [...]
\ No newline at end of file
diff --git a/_images/diag-7a08e5a79432e9299cc0d9671bd39677be5618e8.svg
b/_images/diag-7a08e5a79432e9299cc0d9671bd39677be5618e8.svg
deleted file mode 100644
index d6568aec0a..0000000000
--- a/_images/diag-7a08e5a79432e9299cc0d9671bd39677be5618e8.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="548px" preserveAspectRatio="none"
style="width:330px;height:548px;background:#FFFFFF;" version="1.1" viewBox="0 0
330 548" width="330px" zoomAndPan="magnify"><defs/><g><!--class
Configuration--><g id="elem_Configuration"><rect codeLine="1" fill="#F1F1F1"
height="129.4844" id="Configuration" rx="2.5" ry="2.5" style= [...]
\ No newline at end of file
diff --git a/_images/diag-892fd9dbd9ea6bece55c1d4078ae1de2edd5c689.svg
b/_images/diag-892fd9dbd9ea6bece55c1d4078ae1de2edd5c689.svg
deleted file mode 100644
index cbe9bce8db..0000000000
--- a/_images/diag-892fd9dbd9ea6bece55c1d4078ae1de2edd5c689.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="134px" preserveAspectRatio="none"
style="width:347px;height:134px;background:#FFFFFF;" version="1.1" viewBox="0 0
347 134" width="347px" zoomAndPan="magnify"><defs/><g><rect fill="#F1F1F1"
height="36.2969" rx="12.5" ry="12.5" style="stroke:#181818;stroke-width:1.5;"
width="48" x="10" y="48.1484"/><text fill="#00000 [...]
\ 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-a51b68065f249459078382aa4c61888857f01b2c.svg
b/_images/diag-a51b68065f249459078382aa4c61888857f01b2c.svg
deleted file mode 100644
index c66f60d264..0000000000
--- a/_images/diag-a51b68065f249459078382aa4c61888857f01b2c.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="905px" preserveAspectRatio="none"
style="width:1157px;height:905px;background:#FFFFFF;" version="1.1" viewBox="0
0 1157 905" width="1157px" zoomAndPan="magnify"><defs/><g><rect fill="#DDDDDD"
height="104.7969" id="_legend" rx="7.5" ry="7.5"
style="stroke:#000000;stroke-width:1.0;" width="207" x="924" y="12"/><rect
[...]
\ 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/_images/diag-fd71b342bbb89cd55a1ddb592976b9ac26b6348e.svg
b/_images/diag-fd71b342bbb89cd55a1ddb592976b9ac26b6348e.svg
deleted file mode 100644
index dcd88d33a2..0000000000
--- a/_images/diag-fd71b342bbb89cd55a1ddb592976b9ac26b6348e.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="300px" preserveAspectRatio="none"
style="width:649px;height:300px;background:#FFFFFF;" version="1.1" viewBox="0 0
649 300" width="649px" zoomAndPan="magnify"><defs/><g><!--class
LoggerContext--><g id="elem_LoggerContext"><rect codeLine="1" fill="#F1F1F1"
height="96.8906" id="LoggerContext" rx="2.5" ry="2.5" style=" [...]
\ No newline at end of file
diff --git a/javadoc/log4j-core/deprecated-list.html
b/javadoc/log4j-core/deprecated-list.html
index 49433fd6b0..016f14b7f9 100644
--- a/javadoc/log4j-core/deprecated-list.html
+++ b/javadoc/log4j-core/deprecated-list.html
@@ -582,22 +582,26 @@ loadScripts(document, 'script');</script>
<div class="col-last even-row-color">
<div class="deprecation-comment">Use {<a
href="org/apache/logging/log4j/core/util/datetime/FastDatePrinter.html#format(java.util.Date)"><code>FastDatePrinter.format(Date)</code></a>,
{<a
href="org/apache/logging/log4j/core/util/datetime/FastDatePrinter.html#format(java.util.Calendar)"><code>FastDatePrinter.format(Calendar)</code></a>,
{<a
href="org/apache/logging/log4j/core/util/datetime/FastDatePrinter.html#format(long)"><code>FastDatePrinter.format(long)</code></a>,
or {<code>FastDateP [...]
</div>
-<div class="col-summary-item-name odd-row-color"><a
href="org/apache/logging/log4j/core/util/NameUtil.html#md5(java.lang.String)">org.apache.logging.log4j.core.util.NameUtil.md5<wbr>(String)</a></div>
-<div class="col-last odd-row-color"></div>
-<div class="col-summary-item-name even-row-color"><a
href="org/apache/logging/log4j/core/util/StringEncoder.html#encodeIsoChars(java.lang.CharSequence,int,byte%5B%5D,int,int)">org.apache.logging.log4j.core.util.StringEncoder.encodeIsoChars<wbr>(CharSequence,
int, byte[], int, int)</a></div>
-<div class="col-last even-row-color">
-<div class="deprecation-comment">No longer necessary given better performance
in Java 8</div>
+<div class="col-summary-item-name odd-row-color"><a
href="org/apache/logging/log4j/core/util/Loader.html#isJansiAvailable()">org.apache.logging.log4j.core.util.Loader.isJansiAvailable()</a></div>
+<div class="col-last odd-row-color">
+<div class="deprecation-comment">Since 2.25.0 without a replacement.</div>
</div>
-<div class="col-summary-item-name odd-row-color"><a
href="org/apache/logging/log4j/core/util/StringEncoder.html#encodeSingleByteChars(java.lang.CharSequence)">org.apache.logging.log4j.core.util.StringEncoder.encodeSingleByteChars<wbr>(CharSequence)</a></div>
+<div class="col-summary-item-name even-row-color"><a
href="org/apache/logging/log4j/core/util/NameUtil.html#md5(java.lang.String)">org.apache.logging.log4j.core.util.NameUtil.md5<wbr>(String)</a></div>
+<div class="col-last even-row-color"></div>
+<div class="col-summary-item-name odd-row-color"><a
href="org/apache/logging/log4j/core/util/StringEncoder.html#encodeIsoChars(java.lang.CharSequence,int,byte%5B%5D,int,int)">org.apache.logging.log4j.core.util.StringEncoder.encodeIsoChars<wbr>(CharSequence,
int, byte[], int, int)</a></div>
<div class="col-last odd-row-color">
<div class="deprecation-comment">No longer necessary given better performance
in Java 8</div>
</div>
-<div class="col-summary-item-name even-row-color"><a
href="org/apache/logging/log4j/core/util/StringEncoder.html#encodeString(java.lang.CharSequence,int,int,byte%5B%5D)">org.apache.logging.log4j.core.util.StringEncoder.encodeString<wbr>(CharSequence,
int, int, byte[])</a></div>
+<div class="col-summary-item-name even-row-color"><a
href="org/apache/logging/log4j/core/util/StringEncoder.html#encodeSingleByteChars(java.lang.CharSequence)">org.apache.logging.log4j.core.util.StringEncoder.encodeSingleByteChars<wbr>(CharSequence)</a></div>
<div class="col-last even-row-color">
<div class="deprecation-comment">No longer necessary given better performance
in Java 8</div>
</div>
-<div class="col-summary-item-name odd-row-color"><a
href="org/apache/logging/log4j/core/util/WatchManager.html#getWatchers()">org.apache.logging.log4j.core.util.WatchManager.getWatchers()</a></div>
+<div class="col-summary-item-name odd-row-color"><a
href="org/apache/logging/log4j/core/util/StringEncoder.html#encodeString(java.lang.CharSequence,int,int,byte%5B%5D)">org.apache.logging.log4j.core.util.StringEncoder.encodeString<wbr>(CharSequence,
int, int, byte[])</a></div>
<div class="col-last odd-row-color">
+<div class="deprecation-comment">No longer necessary given better performance
in Java 8</div>
+</div>
+<div class="col-summary-item-name even-row-color"><a
href="org/apache/logging/log4j/core/util/WatchManager.html#getWatchers()">org.apache.logging.log4j.core.util.WatchManager.getWatchers()</a></div>
+<div class="col-last even-row-color">
<div class="deprecation-comment">use getConfigurationWatchers.</div>
</div>
</div>
diff --git a/javadoc/log4j-core/index-all.html
b/javadoc/log4j-core/index-all.html
index 891eaa74a0..20cf23394c 100644
--- a/javadoc/log4j-core/index-all.html
+++ b/javadoc/log4j-core/index-all.html
@@ -10257,7 +10257,11 @@ loadScripts(document, 'script');</script>
<dt><a
href="org/apache/logging/log4j/core/appender/rolling/action/AbstractAction.html#isInterrupted()"
class="member-name-link">isInterrupted()</a> - Method in class
org.apache.logging.log4j.core.appender.rolling.action.<a
href="org/apache/logging/log4j/core/appender/rolling/action/AbstractAction.html"
title="class in
org.apache.logging.log4j.core.appender.rolling.action">AbstractAction</a></dt>
<dd> </dd>
<dt><a
href="org/apache/logging/log4j/core/util/Loader.html#isJansiAvailable()"
class="member-name-link">isJansiAvailable()</a> - Static method in class
org.apache.logging.log4j.core.util.<a
href="org/apache/logging/log4j/core/util/Loader.html" title="class in
org.apache.logging.log4j.core.util">Loader</a></dt>
-<dd> </dd>
+<dd>
+<div class="deprecation-block"><span
class="deprecated-label">Deprecated.</span>
+<div class="deprecation-comment">Since 2.25.0 without a replacement.</div>
+</div>
+</dd>
<dt><a
href="org/apache/logging/log4j/core/net/JndiManager.html#isJndiContextSelectorEnabled()"
class="member-name-link">isJndiContextSelectorEnabled()</a> - Static method in
class org.apache.logging.log4j.core.net.<a
href="org/apache/logging/log4j/core/net/JndiManager.html" title="class in
org.apache.logging.log4j.core.net">JndiManager</a></dt>
<dd>
<div class="block">Tests whether the JNDI system properties for
ContextSelector is currently enabled.</div>
@@ -10564,7 +10568,7 @@ loadScripts(document, 'script');</script>
<dd>
<div class="block">Renders an input as ANSI escaped output.</div>
</dd>
-<dt><a
href="org/apache/logging/log4j/core/pattern/JAnsiTextRenderer.html#%3Cinit%3E(java.lang.String%5B%5D,java.util.Map)"
class="member-name-link">JAnsiTextRenderer(String[], Map<String,
AnsiRenderer.Code[]>)</a> - Constructor for class
org.apache.logging.log4j.core.pattern.<a
href="org/apache/logging/log4j/core/pattern/JAnsiTextRenderer.html"
title="class in
org.apache.logging.log4j.core.pattern">JAnsiTextRenderer</a></dt>
+<dt><a
href="org/apache/logging/log4j/core/pattern/JAnsiTextRenderer.html#%3Cinit%3E(java.lang.String%5B%5D,java.util.Map)"
class="member-name-link">JAnsiTextRenderer(String[], Map<String,
String>)</a> - Constructor for class
org.apache.logging.log4j.core.pattern.<a
href="org/apache/logging/log4j/core/pattern/JAnsiTextRenderer.html"
title="class in
org.apache.logging.log4j.core.pattern">JAnsiTextRenderer</a></dt>
<dd> </dd>
<dt><a href="org/apache/logging/log4j/core/lookup/JavaLookup.html"
class="type-name-link" title="class in
org.apache.logging.log4j.core.lookup">JavaLookup</a> - Class in <a
href="org/apache/logging/log4j/core/lookup/package-summary.html">org.apache.logging.log4j.core.lookup</a></dt>
<dd>
diff --git a/javadoc/log4j-core/member-search-index.js
b/javadoc/log4j-core/member-search-index.js
index dcb6fd7af8..2de3b24fef 100644
--- a/javadoc/log4j-core/member-search-index.js
+++ b/javadoc/log4j-core/member-search-index.js
@@ -1 +1 @@
-memberSearchIndex =
[{"p":"org.apache.logging.log4j.core.pattern","c":"NameAbbreviator","l":"abbreviate(String,
StringBuilder)","u":"abbreviate(java.lang.String,java.lang.StringBuilder)"},{"p":"org.apache.logging.log4j.core.pattern","c":"NamePatternConverter","l":"abbreviate(String,
StringBuilder)","u":"abbreviate(java.lang.String,java.lang.StringBuilder)"},{"p":"org.apache.logging.log4j.core.util.datetime","c":"FixedDateFormat.FixedFormat","l":"ABSOLUTE"},{"p":"org.apache.logging.log4j.
[...]
\ No newline at end of file
+memberSearchIndex =
[{"p":"org.apache.logging.log4j.core.pattern","c":"NameAbbreviator","l":"abbreviate(String,
StringBuilder)","u":"abbreviate(java.lang.String,java.lang.StringBuilder)"},{"p":"org.apache.logging.log4j.core.pattern","c":"NamePatternConverter","l":"abbreviate(String,
StringBuilder)","u":"abbreviate(java.lang.String,java.lang.StringBuilder)"},{"p":"org.apache.logging.log4j.core.util.datetime","c":"FixedDateFormat.FixedFormat","l":"ABSOLUTE"},{"p":"org.apache.logging.log4j.
[...]
\ No newline at end of file
diff --git
a/javadoc/log4j-core/org/apache/logging/log4j/core/appender/ConsoleAppender.html
b/javadoc/log4j-core/org/apache/logging/log4j/core/appender/ConsoleAppender.html
index a98524843a..7ec1079a70 100644
---
a/javadoc/log4j-core/org/apache/logging/log4j/core/appender/ConsoleAppender.html
+++
b/javadoc/log4j-core/org/apache/logging/log4j/core/appender/ConsoleAppender.html
@@ -166,10 +166,10 @@ loadScripts(document, 'script');</script>
<div class="col-first even-row-color method-summary-table
method-summary-table-tab1 method-summary-table-tab4
method-summary-table-tab6"><code>static <a href="ConsoleAppender.html"
title="class in
org.apache.logging.log4j.core.appender">ConsoleAppender</a></code></div>
<div class="col-second even-row-color method-summary-table
method-summary-table-tab1 method-summary-table-tab4
method-summary-table-tab6"><code><a
href="#createAppender(org.apache.logging.log4j.core.Layout,org.apache.logging.log4j.core.Filter,java.lang.String,java.lang.String,java.lang.String,java.lang.String)"
class="member-name-link">createAppender</a><wbr>(<a href="../Layout.html"
title="interface in org.apache.logging.log4j.core">Layout</a><? extends <a
href="https://docs.oracle.c [...]
<a href="../Filter.html" title="interface in
org.apache.logging.log4j.core">Filter</a> filter,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> targetStr,
+ <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> target,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> name,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> follow,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> ignore)</code></div>
+ <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> ignoreExceptions)</code></div>
<div class="col-last even-row-color method-summary-table
method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Deprecated in 2.7; use <a
href="#newBuilder()"><code>newBuilder()</code></a>.</div>
@@ -257,10 +257,10 @@ loadScripts(document, 'script');</script>
<div class="member-signature"><span class="annotations"><a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html"
title="class or interface in java.lang" class="external-link">@Deprecated</a>
</span><span class="modifiers">public static</span> <span
class="return-type"><a href="ConsoleAppender.html" title="class in
org.apache.logging.log4j.core.appender">ConsoleAppender</a></span> <span
class="element-name">createAppender</span><wbr><span class="parameters">(<a
href="../Layout.html" title="interface in
org.apache.logging.log4j.core">Layout</a><? extends <a
href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html"
title="class or interface in java [...]
<a href="../Filter.html" title="interface in
org.apache.logging.log4j.core">Filter</a> filter,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> targetStr,
+ <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> target,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> name,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> follow,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> ignore)</span></div>
+ <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> ignoreExceptions)</span></div>
<div class="deprecation-block"><span
class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Deprecated in 2.7; use <a
href="#newBuilder()"><code>newBuilder()</code></a>.</div>
</div>
@@ -269,10 +269,10 @@ loadScripts(document, 'script');</script>
<dt>Parameters:</dt>
<dd><code>layout</code> - The layout to use (required).</dd>
<dd><code>filter</code> - The Filter or null.</dd>
-<dd><code>targetStr</code> - The target ("SYSTEM_OUT" or "SYSTEM_ERR"). The
default is "SYSTEM_OUT".</dd>
+<dd><code>target</code> - The target ("SYSTEM_OUT" or "SYSTEM_ERR"). The
default is "SYSTEM_OUT".</dd>
<dd><code>name</code> - The name of the Appender (required).</dd>
<dd><code>follow</code> - If true will follow changes to the underlying output
stream.</dd>
-<dd><code>ignore</code> - If <code>"true"</code> (default) exceptions
encountered when appending events are logged; otherwise they
+<dd><code>ignoreExceptions</code> - If <code>"true"</code> (default)
exceptions encountered when appending events are logged; otherwise they
are propagated to the caller.</dd>
<dt>Returns:</dt>
<dd>The ConsoleAppender.</dd>
diff --git
a/javadoc/log4j-core/org/apache/logging/log4j/core/appender/class-use/ConsoleAppender.html
b/javadoc/log4j-core/org/apache/logging/log4j/core/appender/class-use/ConsoleAppender.html
index 9b9993f9e4..80b05e8246 100644
---
a/javadoc/log4j-core/org/apache/logging/log4j/core/appender/class-use/ConsoleAppender.html
+++
b/javadoc/log4j-core/org/apache/logging/log4j/core/appender/class-use/ConsoleAppender.html
@@ -76,10 +76,10 @@ loadScripts(document, 'script');</script>
<div class="col-first odd-row-color"><code>static <a
href="../ConsoleAppender.html" title="class in
org.apache.logging.log4j.core.appender">ConsoleAppender</a></code></div>
<div class="col-second odd-row-color"><span
class="type-name-label">ConsoleAppender.</span><code><a
href="../ConsoleAppender.html#createAppender(org.apache.logging.log4j.core.Layout,org.apache.logging.log4j.core.Filter,java.lang.String,java.lang.String,java.lang.String,java.lang.String)"
class="member-name-link">createAppender</a><wbr>(<a href="../../Layout.html"
title="interface in org.apache.logging.log4j.core">Layout</a><? extends <a
href="https://docs.oracle.com/javase/8/docs/api/ [...]
<a href="../../Filter.html" title="interface in
org.apache.logging.log4j.core">Filter</a> filter,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> targetStr,
+ <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> target,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> name,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> follow,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> ignore)</code></div>
+ <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> ignoreExceptions)</code></div>
<div class="col-last odd-row-color">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Deprecated in 2.7; use <a
href="../ConsoleAppender.html#newBuilder()"><code>newBuilder()</code></a>.</div>
diff --git
a/javadoc/log4j-core/org/apache/logging/log4j/core/class-use/Filter.html
b/javadoc/log4j-core/org/apache/logging/log4j/core/class-use/Filter.html
index 654fedd2b3..bfc985bb15 100644
--- a/javadoc/log4j-core/org/apache/logging/log4j/core/class-use/Filter.html
+++ b/javadoc/log4j-core/org/apache/logging/log4j/core/class-use/Filter.html
@@ -186,10 +186,10 @@ loadScripts(document, 'script');</script>
<div class="col-first odd-row-color"><code>static <a
href="../appender/ConsoleAppender.html" title="class in
org.apache.logging.log4j.core.appender">ConsoleAppender</a></code></div>
<div class="col-second odd-row-color"><span
class="type-name-label">ConsoleAppender.</span><code><a
href="../appender/ConsoleAppender.html#createAppender(org.apache.logging.log4j.core.Layout,org.apache.logging.log4j.core.Filter,java.lang.String,java.lang.String,java.lang.String,java.lang.String)"
class="member-name-link">createAppender</a><wbr>(<a href="../Layout.html"
title="interface in org.apache.logging.log4j.core">Layout</a><? extends <a
href="https://docs.oracle.com/javase/8/doc [...]
<a href="../Filter.html" title="interface in
org.apache.logging.log4j.core">Filter</a> filter,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> targetStr,
+ <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> target,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> name,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> follow,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> ignore)</code></div>
+ <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> ignoreExceptions)</code></div>
<div class="col-last odd-row-color">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Deprecated in 2.7; use <a
href="../appender/ConsoleAppender.html#newBuilder()"><code>ConsoleAppender.newBuilder()</code></a>.</div>
diff --git
a/javadoc/log4j-core/org/apache/logging/log4j/core/class-use/Layout.html
b/javadoc/log4j-core/org/apache/logging/log4j/core/class-use/Layout.html
index 6bb5449595..d51d37590b 100644
--- a/javadoc/log4j-core/org/apache/logging/log4j/core/class-use/Layout.html
+++ b/javadoc/log4j-core/org/apache/logging/log4j/core/class-use/Layout.html
@@ -166,10 +166,10 @@ loadScripts(document, 'script');</script>
<div class="col-first even-row-color"><code>static <a
href="../appender/ConsoleAppender.html" title="class in
org.apache.logging.log4j.core.appender">ConsoleAppender</a></code></div>
<div class="col-second even-row-color"><span
class="type-name-label">ConsoleAppender.</span><code><a
href="../appender/ConsoleAppender.html#createAppender(org.apache.logging.log4j.core.Layout,org.apache.logging.log4j.core.Filter,java.lang.String,java.lang.String,java.lang.String,java.lang.String)"
class="member-name-link">createAppender</a><wbr>(<a href="../Layout.html"
title="interface in org.apache.logging.log4j.core">Layout</a><? extends <a
href="https://docs.oracle.com/javase/8/do [...]
<a href="../Filter.html" title="interface in
org.apache.logging.log4j.core">Filter</a> filter,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> targetStr,
+ <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> target,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> name,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> follow,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> ignore)</code></div>
+ <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> ignoreExceptions)</code></div>
<div class="col-last even-row-color">
<div class="block"><span class="deprecated-label">Deprecated.</span>
<div class="deprecation-comment">Deprecated in 2.7; use <a
href="../appender/ConsoleAppender.html#newBuilder()"><code>ConsoleAppender.newBuilder()</code></a>.</div>
diff --git
a/javadoc/log4j-core/org/apache/logging/log4j/core/impl/package-summary.html
b/javadoc/log4j-core/org/apache/logging/log4j/core/impl/package-summary.html
index 36474b6b6f..55abc9867e 100644
--- a/javadoc/log4j-core/org/apache/logging/log4j/core/impl/package-summary.html
+++ b/javadoc/log4j-core/org/apache/logging/log4j/core/impl/package-summary.html
@@ -65,7 +65,7 @@ loadScripts(document, 'script');</script>
</div>
<hr>
<div class="package-signature"><span class="annotations">@Export
-@Version("2.25.0")
+@Version("2.24.1")
</span>package <span
class="element-name">org.apache.logging.log4j.core.impl</span></div>
<section class="package-description" id="package-description">
<div class="block">Log4j 2 private implementation classes.</div>
diff --git
a/javadoc/log4j-core/org/apache/logging/log4j/core/layout/PatternLayout.Builder.html
b/javadoc/log4j-core/org/apache/logging/log4j/core/layout/PatternLayout.Builder.html
index 0393037a8b..e44d4f455b 100644
---
a/javadoc/log4j-core/org/apache/logging/log4j/core/layout/PatternLayout.Builder.html
+++
b/javadoc/log4j-core/org/apache/logging/log4j/core/layout/PatternLayout.Builder.html
@@ -224,8 +224,7 @@ implements <a href="../util/Builder.html" title="interface
in org.apache.logging
<div class="member-signature"><span class="modifiers">public</span> <span
class="return-type"><a href="PatternLayout.Builder.html" title="class in
org.apache.logging.log4j.core.layout">PatternLayout.Builder</a></span> <span
class="element-name">withDisableAnsi</span><wbr><span
class="parameters">(boolean disableAnsi)</span></div>
<dl class="notes">
<dt>Parameters:</dt>
-<dd><code>disableAnsi</code> - If <code>"true"</code> (default is value of
system property `log4j.skipJansi`, or `true` if undefined),
- do not output ANSI escape codes</dd>
+<dd><code>disableAnsi</code> - If <code>true</code>, do not output ANSI escape
codes.</dd>
</dl>
</section>
</li>
diff --git
a/javadoc/log4j-core/org/apache/logging/log4j/core/pattern/JAnsiTextRenderer.html
b/javadoc/log4j-core/org/apache/logging/log4j/core/pattern/JAnsiTextRenderer.html
index 113af1d985..3cb24c70a7 100644
---
a/javadoc/log4j-core/org/apache/logging/log4j/core/pattern/JAnsiTextRenderer.html
+++
b/javadoc/log4j-core/org/apache/logging/log4j/core/pattern/JAnsiTextRenderer.html
@@ -85,11 +85,14 @@ loadScripts(document, 'script');</script>
<span class="extends-implements">extends <a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html"
title="class or interface in java.lang" class="external-link">Object</a>
implements <a href="TextRenderer.html" title="interface in
org.apache.logging.log4j.core.pattern">TextRenderer</a></span></div>
<div class="block">Renders an input as ANSI escaped output.
-
- Uses the JAnsi rendering syntax as the default to render a message into an
ANSI escaped string.
-
+ <p>
+ Uses the
+ <a
href="https://www.javadoc.io/doc/org.jline/jline/latest/org/jline/jansi/AnsiRenderer.html">JLine
AnsiRenderer syntax</a>
+ to render a message into an ANSI escaped string.
+ </p>
+ <p>
The default syntax for embedded ANSI codes is:
-
+ </p>
<pre>
@|<em>code</em>(,<em>code</em>)* <em>text</em>|@
</pre>
@@ -124,16 +127,11 @@ implements <a href="TextRenderer.html" title="interface
in org.apache.logging.lo
logger.info("@|KeyStyle {}|@ = @|ValueStyle {}|@", entry.getKey(),
entry.getValue());
</pre>
- Note: This class originally copied and then heavily modified code from
JAnsi's AnsiRenderer (which is licensed as
- Apache 2.0.)</div>
-<dl class="notes">
-<dt>See Also:</dt>
-<dd>
-<ul class="see-list">
-<li><code>AnsiRenderer</code></li>
-</ul>
-</dd>
-</dl>
+ <p>
+ <strong>Note:</strong> this class was originally copied and then heavily
modified from
+ <a
href="https://www.javadoc.io/doc/org.jline/jline/latest/org/jline/jansi/AnsiRenderer.html">JAnsi/JLine
AnsiRenderer</a>,
+ licensed under an Apache Software License, version 2.0.
+ </p></div>
</section>
<section class="summary">
<ul class="summary-list">
@@ -146,7 +144,7 @@ implements <a href="TextRenderer.html" title="interface in
org.apache.logging.lo
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
-<div class="col-first even-row-color"><code>static final <a
href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html"
title="class or interface in java.util" class="external-link">Map</a><<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a>,<wbr>org.fusesource.jansi.AnsiRenderer.Code[]></code></div>
+<div class="col-first even-row-color"><code>static final <a
href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html"
title="class or interface in java.util" class="external-link">Map</a><<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a>,<wbr><a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang" class="external-link">Str [...]
<div class="col-second even-row-color"><code><a
href="#DefaultExceptionStyleMap"
class="member-name-link">DefaultExceptionStyleMap</a></code></div>
<div class="col-last even-row-color"> </div>
</div>
@@ -161,7 +159,7 @@ implements <a href="TextRenderer.html" title="interface in
org.apache.logging.lo
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a
href="#%3Cinit%3E(java.lang.String%5B%5D,java.util.Map)"
class="member-name-link">JAnsiTextRenderer</a><wbr>(<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a>[] formats,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html"
title="class or interface in java.util" class="external-link">Map</a><<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a>,<wbr>org.fusesource.jansi.AnsiRenderer.Code[]> defaultStyleMap)</code></div>
+ <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html"
title="class or interface in java.util" class="external-link">Map</a><<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a>,<wbr><a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a>> defaultStyleMap)</code></div>
<div class="col-last even-row-color"> </div>
</div>
</section>
@@ -177,7 +175,7 @@ implements <a href="TextRenderer.html" title="interface in
org.apache.logging.lo
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
-<div class="col-first even-row-color method-summary-table
method-summary-table-tab2 method-summary-table-tab4"><code><a
href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html"
title="class or interface in java.util" class="external-link">Map</a><<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a>,<wbr>org.fusesource.jansi.AnsiRenderer.Code[]></code></div>
+<div class="col-first even-row-color method-summary-table
method-summary-table-tab2 method-summary-table-tab4"><code><a
href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html"
title="class or interface in java.util" class="external-link">Map</a><<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a>,<wbr><a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html" title
[...]
<div class="col-second even-row-color method-summary-table
method-summary-table-tab2 method-summary-table-tab4"><code><a
href="#getStyleMap()" class="member-name-link">getStyleMap</a>()</code></div>
<div class="col-last even-row-color method-summary-table
method-summary-table-tab2 method-summary-table-tab4"> </div>
<div class="col-first odd-row-color method-summary-table
method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
@@ -216,7 +214,7 @@ implements <a href="TextRenderer.html" title="interface in
org.apache.logging.lo
<li>
<section class="detail" id="DefaultExceptionStyleMap">
<h3>DefaultExceptionStyleMap</h3>
-<div class="member-signature"><span class="modifiers">public static
final</span> <span class="return-type"><a
href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html"
title="class or interface in java.util" class="external-link">Map</a><<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a>,<wbr>org.fusesource.jansi.AnsiRenderer.Code[]></span> <span
class="element-name"> [...]
+<div class="member-signature"><span class="modifiers">public static
final</span> <span class="return-type"><a
href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html"
title="class or interface in java.util" class="external-link">Map</a><<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a>,<wbr><a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="cla [...]
</section>
</li>
</ul>
@@ -231,7 +229,7 @@ implements <a href="TextRenderer.html" title="interface in
org.apache.logging.lo
<section class="detail" id="<init>(java.lang.String[],java.util.Map)">
<h3>JAnsiTextRenderer</h3>
<div class="member-signature"><span class="modifiers">public</span> <span
class="element-name">JAnsiTextRenderer</span><wbr><span class="parameters">(<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a>[] formats,
- <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html"
title="class or interface in java.util" class="external-link">Map</a><<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a>,<wbr>org.fusesource.jansi.AnsiRenderer.Code[]> defaultStyleMap)</span></div>
+ <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html"
title="class or interface in java.util" class="external-link">Map</a><<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a>,<wbr><a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a>> defaultStyleMap)</span></div>
</section>
</li>
</ul>
@@ -243,12 +241,6 @@ implements <a href="TextRenderer.html" title="interface in
org.apache.logging.lo
<h2>Method Details</h2>
<ul class="member-list">
<li>
-<section class="detail" id="getStyleMap()">
-<h3>getStyleMap</h3>
-<div class="member-signature"><span class="modifiers">public</span> <span
class="return-type"><a
href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html"
title="class or interface in java.util" class="external-link">Map</a><<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a>,<wbr>org.fusesource.jansi.AnsiRenderer.Code[]></span> <span
class="element-name">getStyleMap</ [...]
-</section>
-</li>
-<li>
<section class="detail"
id="render(java.lang.String,java.lang.StringBuilder,java.lang.String)">
<h3>render</h3>
<div class="member-signature"><span class="modifiers">public</span> <span
class="return-type">void</span> <span
class="element-name">render</span><wbr><span class="parameters">(<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> input,
@@ -289,6 +281,12 @@ implements <a href="TextRenderer.html" title="interface in
org.apache.logging.lo
</section>
</li>
<li>
+<section class="detail" id="getStyleMap()">
+<h3>getStyleMap</h3>
+<div class="member-signature"><span class="modifiers">public</span> <span
class="return-type"><a
href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html"
title="class or interface in java.util" class="external-link">Map</a><<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a>,<wbr><a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interfa [...]
+</section>
+</li>
+<li>
<section class="detail" id="toString()">
<h3>toString</h3>
<div class="member-signature"><span class="modifiers">public</span> <span
class="return-type"><a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a></span> <span
class="element-name">toString</span>()</div>
diff --git
a/javadoc/log4j-core/org/apache/logging/log4j/core/pattern/package-summary.html
b/javadoc/log4j-core/org/apache/logging/log4j/core/pattern/package-summary.html
index 749d36c302..349952da1a 100644
---
a/javadoc/log4j-core/org/apache/logging/log4j/core/pattern/package-summary.html
+++
b/javadoc/log4j-core/org/apache/logging/log4j/core/pattern/package-summary.html
@@ -65,7 +65,7 @@ loadScripts(document, 'script');</script>
</div>
<hr>
<div class="package-signature"><span class="annotations">@Export
-@Version("2.25.0")
+@Version("2.24.1")
</span>package <span
class="element-name">org.apache.logging.log4j.core.pattern</span></div>
<section class="package-description" id="package-description">
<div class="block">Provides classes implementing format specifiers in
conversion patterns.</div>
diff --git a/javadoc/log4j-core/org/apache/logging/log4j/core/util/Loader.html
b/javadoc/log4j-core/org/apache/logging/log4j/core/util/Loader.html
index 6852320fbd..2aab70f334 100644
--- a/javadoc/log4j-core/org/apache/logging/log4j/core/util/Loader.html
+++ b/javadoc/log4j-core/org/apache/logging/log4j/core/util/Loader.html
@@ -88,7 +88,7 @@ loadScripts(document, 'script');</script>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
-<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button
id="method-summary-table-tab0" role="tab" aria-selected="true"
aria-controls="method-summary-table.tabpanel" tabindex="0"
onkeydown="switchTab(event)" onclick="show('method-summary-table',
'method-summary-table', 3)" class="active-table-tab">All
Methods</button><button id="method-summary-table-tab1" role="tab"
aria-selected="false" aria-controls="method-summary-table.tabpanel"
tabindex="-1" onkeydown="switchTab( [...]
+<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button
id="method-summary-table-tab0" role="tab" aria-selected="true"
aria-controls="method-summary-table.tabpanel" tabindex="0"
onkeydown="switchTab(event)" onclick="show('method-summary-table',
'method-summary-table', 3)" class="active-table-tab">All
Methods</button><button id="method-summary-table-tab1" role="tab"
aria-selected="false" aria-controls="method-summary-table.tabpanel"
tabindex="-1" onkeydown="switchTab( [...]
<div id="method-summary-table.tabpanel" role="tabpanel"
aria-labelledby="method-summary-table-tab0">
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
@@ -134,9 +134,13 @@ loadScripts(document, 'script');</script>
<div class="col-last even-row-color method-summary-table
method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Determines if a named Class can be loaded or not.</div>
</div>
-<div class="col-first odd-row-color method-summary-table
method-summary-table-tab1 method-summary-table-tab4"><code>static
boolean</code></div>
-<div class="col-second odd-row-color method-summary-table
method-summary-table-tab1 method-summary-table-tab4"><code><a
href="#isJansiAvailable()"
class="member-name-link">isJansiAvailable</a>()</code></div>
-<div class="col-last odd-row-color method-summary-table
method-summary-table-tab1 method-summary-table-tab4"> </div>
+<div class="col-first odd-row-color method-summary-table
method-summary-table-tab1 method-summary-table-tab4
method-summary-table-tab6"><code>static boolean</code></div>
+<div class="col-second odd-row-color method-summary-table
method-summary-table-tab1 method-summary-table-tab4
method-summary-table-tab6"><code><a href="#isJansiAvailable()"
class="member-name-link">isJansiAvailable</a>()</code></div>
+<div class="col-last odd-row-color method-summary-table
method-summary-table-tab1 method-summary-table-tab4 method-summary-table-tab6">
+<div class="block"><span class="deprecated-label">Deprecated.</span>
+<div class="deprecation-comment">Since 2.25.0 without a replacement.</div>
+</div>
+</div>
<div class="col-first even-row-color method-summary-table
method-summary-table-tab1 method-summary-table-tab4"><code>static <a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html"
title="class or interface in java.lang"
class="external-link">Class</a><?></code></div>
<div class="col-second even-row-color method-summary-table
method-summary-table-tab1 method-summary-table-tab4"><code><a
href="#loadClass(java.lang.String)"
class="member-name-link">loadClass</a><wbr>(<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"
title="class or interface in java.lang"
class="external-link">String</a> className)</code></div>
<div class="col-last even-row-color method-summary-table
method-summary-table-tab1 method-summary-table-tab4">
@@ -431,7 +435,11 @@ loadScripts(document, 'script');</script>
<li>
<section class="detail" id="isJansiAvailable()">
<h3>isJansiAvailable</h3>
-<div class="member-signature"><span class="modifiers">public
static</span> <span class="return-type">boolean</span> <span
class="element-name">isJansiAvailable</span>()</div>
+<div class="member-signature"><span class="annotations"><a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html"
title="class or interface in java.lang" class="external-link">@Deprecated</a>
+</span><span class="modifiers">public static</span> <span
class="return-type">boolean</span> <span
class="element-name">isJansiAvailable</span>()</div>
+<div class="deprecation-block"><span
class="deprecated-label">Deprecated.</span>
+<div class="deprecation-comment">Since 2.25.0 without a replacement.</div>
+</div>
</section>
</li>
<li>
diff --git a/log4j-jul.html b/log4j-jul.html
index c27a0bdaa8..a67239c391 100644
--- a/log4j-jul.html
+++ b/log4j-jul.html
@@ -418,11 +418,63 @@ For instance, <code>log4j-slf4j2-impl</code>
<em>bridges</em> SLF4J calls to Log
<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-a51b68065f249459078382aa4c61888857f01b2c.svg"
alt="Visualization of a typical Log4j Core installation with SLF4J, JUL, and
JPL bridges">
+<pre>@startuml
+
+frame "Compile time" {
+ [Application] --> [Log4j API] : logs to
+
+ [Log4j API] #Cyan
+
+ [SLF4J] #Cyan
+
+ [Library 1] --> [SLF4J] : logs to
+ [Application] --> [Library 1] : uses
+ [Application] --> [Library 2] : uses
+ [Application] --> [Library 3] : uses
+}
+
+frame Runtime {
+
+ [Log4j Core] <.. [Log4j API] : is implemented by
+ [Log4j Core] <.. (log4j2.xml) : is provided to
+ [Log4j Core] #LightGreen
+
+ [JPL-to-Log4j] ..> [Log4j Core] : forwards to
+ [JPL-to-Log4j] #Yellow
+
+ [SLF4J-to-Log4j] ..> [Log4j Core] : forwards to
+ [SLF4J-to-Log4j] #Yellow
+
+ [JUL-to-Log4j] ..> [Log4j Core] : forwards to
+ [JUL-to-Log4j] #Yellow
+
+ frame JRE {
+ [JPL] #Cyan
+ [JUL] #Cyan
+ }
+
+}
+
+[Library 2] --> [JUL] : logs to
+[Library 3] --> [JPL] : logs to
+
+[JPL] ..> [JPL-to-Log4j] : is implemented by
+[JUL] ..> [JUL-to-Log4j] : is implemented by
+[SLF4J] ..> [SLF4J-to-Log4j] : is implemented by
+
+legend top right
+ | <#LightGreen> | Logging implementation |
+ | <#Yellow> | Logging bridge |
+ | <#Cyan> | Logging API |
+ | <size:18><U+2192></size> | Compile-time usage |
+ | <size:18><U+21E2></size> | Runtime usage |
+endlegend
+
+@enduml</pre>
</div>
-<div class="title">Figure 1. Visualization of a typical Log4j Core
installation with SLF4J, JUL, and JPL bridges</div>
</div>
</div>
</details>
diff --git a/manual/appenders.html b/manual/appenders.html
index ab867ae787..ed7871f984 100644
--- a/manual/appenders.html
+++ b/manual/appenders.html
@@ -689,7 +689,7 @@ They are documented in separate pages based on their target
resource:</p>
<h3 id="ConsoleAppender"><a class="anchor" href="#ConsoleAppender"></a>Console
Appender</h3>
<div class="paragraph">
<p>As one might expect, the Console Appender writes its output to either the
standard output or standard error output.
-The appender supports four different ways to access the output streams:</p>
+The appender supports three different ways to access the output streams:</p>
</div>
<div class="dlist">
<dl>
@@ -723,50 +723,6 @@ Some application servers modify <code>System.out</code>
and <code>System.err</co
</table>
</div>
</dd>
-<dt class="hdlist1"><code>JANSI</code></dt>
-<dd>
-<p>If the application is running on Windows and the
-<a href="https://fusesource.github.io/jansi/">JANSI library</a>
-is available, the Console appender will use JANSI to emulate ANSI sequence
support.
-This mode can be disabled by setting the
-<a href="systemproperties.html#log4j2.skipJansi" class="xref
page"><code>log4j2.skipJansi</code></a>
-configuration attribute to <code>true</code>.</p>
-<div class="paragraph">
-<p>Additional runtime dependencies are required to use JANSI:</p>
-</div>
-<div id="_tabs_1" class="openblock tabs is-sync is-loading">
-<div class="content">
-<div class="ulist tablist">
-<ul>
-<li id="_tabs_1_maven" class="tab">
-<p>Maven</p>
-</li>
-<li id="_tabs_1_gradle" class="tab">
-<p>Gradle</p>
-</li>
-</ul>
-</div>
-<div id="_tabs_1_maven--panel" class="tabpanel"
aria-labelledby="_tabs_1_maven">
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-xml hljs"
data-lang="xml"><dependency>
- <groupId>org.fusesource.jansi</groupId>
- <artifactId>jansi</artifactId>
- <version>1.18</version>
-</dependency></code></pre>
-</div>
-</div>
-</div>
-<div id="_tabs_1_gradle--panel" class="tabpanel"
aria-labelledby="_tabs_1_gradle">
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-groovy hljs"
data-lang="groovy">runtimeOnly 'org.fusesource.jansi:jansi:1.18'</code></pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-</dd>
</dl>
</div>
<table id="ConsoleAppender-attributes" class="tableblock frame-all grid-all
stretch">
@@ -840,9 +796,7 @@ or
</div>
<div class="paragraph">
<p>This setting is incompatible with the
-<a href="#ConsoleAppender-attr-follow"><code>follow</code> attribute</a>
-and
-<a href="systemproperties.html#log4j2.skipJansi" class="xref page">JANSI
support</a>.</p>
+<a href="#ConsoleAppender-attr-follow"><code>follow</code> attribute</a>.</p>
</div></div></td>
</tr>
<tr>
@@ -856,9 +810,7 @@ follow</code></p></td>
<a
href="https://docs.oracle.com/javase/8/docs/api/java/lang/System.html#setOut-java.io.PrintStream-"><code>System.setErr</code></a>).</p>
<p class="tableblock">Otherwise, the value of <code>System.out</code> (resp.
<code>System.err</code>) at configuration time will be used.</p>
<p class="tableblock">This setting is incompatible with the
-<a href="#ConsoleAppender-attr-direct"><code>direct</code> attribute</a>
-and
-<a href="systemproperties.html#log4j2.skipJansi" class="xref page">JANSI
support</a>.</p></td>
+<a href="#ConsoleAppender-attr-direct"><code>direct</code>
attribute</a>.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><code><a
id="ConsoleAppender-attr-ignoreExceptions"></a>
@@ -937,25 +889,25 @@ target</code></p></td>
<div class="paragraph">
<p>A typical configuration in a <strong>development</strong> environment might
look like:</p>
</div>
-<div id="_tabs_2" class="openblock tabs is-sync is-loading">
+<div id="_tabs_1" class="openblock tabs is-sync is-loading">
<div class="content">
<div class="ulist tablist">
<ul>
-<li id="_tabs_2_xml" class="tab">
+<li id="_tabs_1_xml" class="tab">
<p>XML</p>
</li>
-<li id="_tabs_2_json" class="tab">
+<li id="_tabs_1_json" class="tab">
<p>JSON</p>
</li>
-<li id="_tabs_2_yaml" class="tab">
+<li id="_tabs_1_yaml" class="tab">
<p>YAML</p>
</li>
-<li id="_tabs_2_properties" class="tab">
+<li id="_tabs_1_properties" class="tab">
<p>Properties</p>
</li>
</ul>
</div>
-<div id="_tabs_2_xml--panel" class="tabpanel" aria-labelledby="_tabs_2_xml">
+<div id="_tabs_1_xml--panel" class="tabpanel" aria-labelledby="_tabs_1_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/appenders/console-dev.xml"><code>log4j2.xml</code></a></div>
<div class="content">
@@ -965,7 +917,7 @@ target</code></p></td>
</div>
</div>
</div>
-<div id="_tabs_2_json--panel" class="tabpanel" aria-labelledby="_tabs_2_json">
+<div id="_tabs_1_json--panel" class="tabpanel" aria-labelledby="_tabs_1_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/appenders/console-dev.json"><code>log4j2.json</code></a></div>
<div class="content">
@@ -978,7 +930,7 @@ target</code></p></td>
</div>
</div>
</div>
-<div id="_tabs_2_yaml--panel" class="tabpanel" aria-labelledby="_tabs_2_yaml">
+<div id="_tabs_1_yaml--panel" class="tabpanel" aria-labelledby="_tabs_1_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/appenders/console-dev.yaml"><code>log4j2.yaml</code></a></div>
<div class="content">
@@ -989,7 +941,7 @@ target</code></p></td>
</div>
</div>
</div>
-<div id="_tabs_2_properties--panel" class="tabpanel"
aria-labelledby="_tabs_2_properties">
+<div id="_tabs_1_properties--panel" class="tabpanel"
aria-labelledby="_tabs_1_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/appenders/console-dev.properties"><code>log4j2.properties</code></a></div>
<div class="content">
@@ -1006,25 +958,25 @@ appender.0.layout.pattern = %d [%t] %p %c -
%m%n</code></pre>
<div class="paragraph">
<p>A typical configuration for a <strong>production</strong> environment might
look like</p>
</div>
-<div id="_tabs_3" class="openblock tabs is-sync is-loading">
+<div id="_tabs_2" class="openblock tabs is-sync is-loading">
<div class="content">
<div class="ulist tablist">
<ul>
-<li id="_tabs_3_xml" class="tab">
+<li id="_tabs_2_xml" class="tab">
<p>XML</p>
</li>
-<li id="_tabs_3_json" class="tab">
+<li id="_tabs_2_json" class="tab">
<p>JSON</p>
</li>
-<li id="_tabs_3_yaml" class="tab">
+<li id="_tabs_2_yaml" class="tab">
<p>YAML</p>
</li>
-<li id="_tabs_3_properties" class="tab">
+<li id="_tabs_2_properties" class="tab">
<p>Properties</p>
</li>
</ul>
</div>
-<div id="_tabs_3_xml--panel" class="tabpanel" aria-labelledby="_tabs_3_xml">
+<div id="_tabs_2_xml--panel" class="tabpanel" aria-labelledby="_tabs_2_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/appenders/console-prod.xml"><code>log4j2.xml</code></a></div>
<div class="content">
@@ -1035,7 +987,7 @@ appender.0.layout.pattern = %d [%t] %p %c -
%m%n</code></pre>
</div>
</div>
</div>
-<div id="_tabs_3_json--panel" class="tabpanel" aria-labelledby="_tabs_3_json">
+<div id="_tabs_2_json--panel" class="tabpanel" aria-labelledby="_tabs_2_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/appenders/console-prod.json"><code>log4j2.json</code></a></div>
<div class="content">
@@ -1047,7 +999,7 @@ appender.0.layout.pattern = %d [%t] %p %c -
%m%n</code></pre>
</div>
</div>
</div>
-<div id="_tabs_3_yaml--panel" class="tabpanel" aria-labelledby="_tabs_3_yaml">
+<div id="_tabs_2_yaml--panel" class="tabpanel" aria-labelledby="_tabs_2_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/appenders/console-prod.yaml"><code>log4j2.yaml</code></a></div>
<div class="content">
@@ -1058,7 +1010,7 @@ appender.0.layout.pattern = %d [%t] %p %c -
%m%n</code></pre>
</div>
</div>
</div>
-<div id="_tabs_3_properties--panel" class="tabpanel"
aria-labelledby="_tabs_3_properties">
+<div id="_tabs_2_properties--panel" class="tabpanel"
aria-labelledby="_tabs_2_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/appenders/console-prod.properties"><code>log4j2.properties</code></a></div>
<div class="content">
@@ -1262,25 +1214,25 @@ By using Servlet appender, you typically will not be
able to differentiate log e
<div class="paragraph">
<p>You can use it by declaring an appender of type <code>Servlet</code> in
your configuration file:</p>
</div>
-<div id="_tabs_4" class="openblock tabs is-sync is-loading">
+<div id="_tabs_3" class="openblock tabs is-sync is-loading">
<div class="content">
<div class="ulist tablist">
<ul>
-<li id="_tabs_4_xml" class="tab">
+<li id="_tabs_3_xml" class="tab">
<p>XML</p>
</li>
-<li id="_tabs_4_json" class="tab">
+<li id="_tabs_3_json" class="tab">
<p>JSON</p>
</li>
-<li id="_tabs_4_yaml" class="tab">
+<li id="_tabs_3_yaml" class="tab">
<p>YAML</p>
</li>
-<li id="_tabs_4_properties" class="tab">
+<li id="_tabs_3_properties" class="tab">
<p>Properties</p>
</li>
</ul>
</div>
-<div id="_tabs_4_xml--panel" class="tabpanel" aria-labelledby="_tabs_4_xml">
+<div id="_tabs_3_xml--panel" class="tabpanel" aria-labelledby="_tabs_3_xml">
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-xml hljs"
data-lang="xml"><Servlet name="SERVLET">
@@ -1289,7 +1241,7 @@ By using Servlet appender, you typically will not be able
to differentiate log e
</div>
</div>
</div>
-<div id="_tabs_4_json--panel" class="tabpanel" aria-labelledby="_tabs_4_json">
+<div id="_tabs_3_json--panel" class="tabpanel" aria-labelledby="_tabs_3_json">
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-xml hljs"
data-lang="xml">"Servlet": {
@@ -1302,7 +1254,7 @@ By using Servlet appender, you typically will not be able
to differentiate log e
</div>
</div>
</div>
-<div id="_tabs_4_yaml--panel" class="tabpanel" aria-labelledby="_tabs_4_yaml">
+<div id="_tabs_3_yaml--panel" class="tabpanel" aria-labelledby="_tabs_3_yaml">
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-xml hljs"
data-lang="xml">Servlet:
@@ -1313,7 +1265,7 @@ By using Servlet appender, you typically will not be able
to differentiate log e
</div>
</div>
</div>
-<div id="_tabs_4_properties--panel" class="tabpanel"
aria-labelledby="_tabs_4_properties">
+<div id="_tabs_3_properties--panel" class="tabpanel"
aria-labelledby="_tabs_3_properties">
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-xml hljs"
data-lang="xml">appender.0.type = Servlet
@@ -1341,19 +1293,19 @@ this usually results in the stacktrace being printed to
the log file twice.</td>
<div class="paragraph">
<p>Additional runtime dependencies are required for using the servlet
appender:</p>
</div>
-<div id="_tabs_5" class="openblock tabs is-sync is-loading">
+<div id="_tabs_4" class="openblock tabs is-sync is-loading">
<div class="content">
<div class="ulist tablist">
<ul>
-<li id="_tabs_5_maven" class="tab">
+<li id="_tabs_4_maven" class="tab">
<p>Maven</p>
</li>
-<li id="_tabs_5_gradle" class="tab">
+<li id="_tabs_4_gradle" class="tab">
<p>Gradle</p>
</li>
</ul>
</div>
-<div id="_tabs_5_maven--panel" class="tabpanel"
aria-labelledby="_tabs_5_maven">
+<div id="_tabs_4_maven--panel" class="tabpanel"
aria-labelledby="_tabs_4_maven">
<div class="paragraph">
<p>We assume you use <a href="../components.html#log4j-bom" class="xref
page"><code>log4j-bom</code></a> for dependency management.</p>
</div>
@@ -1367,7 +1319,7 @@ this usually results in the stacktrace being printed to
the log file twice.</td>
</div>
</div>
</div>
-<div id="_tabs_5_gradle--panel" class="tabpanel"
aria-labelledby="_tabs_5_gradle">
+<div id="_tabs_4_gradle--panel" class="tabpanel"
aria-labelledby="_tabs_4_gradle">
<div class="paragraph">
<p>We assume you use <a href="../components.html#log4j-bom" class="xref
page"><code>log4j-bom</code></a> for dependency management.</p>
</div>
@@ -1386,19 +1338,19 @@ this usually results in the stacktrace being printed to
the log file twice.</td>
<p>Jakarta EE 8 and all Java EE applications servers use the legacy
<code>javax</code> package prefix instead of <code>jakarta</code>.
If you are using those application servers, you should replace the
dependencies above with:</p>
</div>
-<div id="_tabs_6" class="openblock tabs is-sync is-loading">
+<div id="_tabs_5" class="openblock tabs is-sync is-loading">
<div class="content">
<div class="ulist tablist">
<ul>
-<li id="_tabs_6_maven" class="tab">
+<li id="_tabs_5_maven" class="tab">
<p>Maven</p>
</li>
-<li id="_tabs_6_gradle" class="tab">
+<li id="_tabs_5_gradle" class="tab">
<p>Gradle</p>
</li>
</ul>
</div>
-<div id="_tabs_6_maven--panel" class="tabpanel"
aria-labelledby="_tabs_6_maven">
+<div id="_tabs_5_maven--panel" class="tabpanel"
aria-labelledby="_tabs_5_maven">
<div class="paragraph">
<p>We assume you use <a href="../components.html#log4j-bom" class="xref
page"><code>log4j-bom</code></a> for dependency management.</p>
</div>
@@ -1412,7 +1364,7 @@ If you are using those application servers, you should
replace the dependencies
</div>
</div>
</div>
-<div id="_tabs_6_gradle--panel" class="tabpanel"
aria-labelledby="_tabs_6_gradle">
+<div id="_tabs_5_gradle--panel" class="tabpanel"
aria-labelledby="_tabs_5_gradle">
<div class="paragraph">
<p>We assume you use <a href="../components.html#log4j-bom" class="xref
page"><code>log4j-bom</code></a> for dependency management.</p>
</div>
diff --git a/manual/appenders/rolling-file.html
b/manual/appenders/rolling-file.html
index 0a1232835a..e5ba29ad40 100644
--- a/manual/appenders/rolling-file.html
+++ b/manual/appenders/rolling-file.html
@@ -1609,9 +1609,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>
@@ -1639,9 +1680,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>
@@ -1654,9 +1736,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/architecture.html b/manual/architecture.html
index 18c5084a58..8a17138e16 100644
--- a/manual/architecture.html
+++ b/manual/architecture.html
@@ -359,11 +359,146 @@
In this section we will try to explain major pillars its architecture stands
on.
An overview these major classes can be depicted as follows:</p>
</div>
-<div id="architecture-diagram" class="imageblock kroki">
+<div id="architecture-diagram" class="literalblock kroki-error">
+<div class="title">An overview of major classes and their relation</div>
<div class="content">
-<img src="../_images/diag-3f8a04c810525cc09a5e7564abf3aa14ed1f7c81.svg"
alt="An overview of major classes and their relation">
+<pre>@startuml
+
+class LoggerContext {
+ Configuration config
+ Logger[] loggers
+ Logger getLogger(String name)
+}
+
+note left of LoggerContext {
+ Anchor for the logging system
+}
+
+LoggerContext --> "0..*" Logger
+
+package "Configuration" as c {
+
+ class Configuration {
+ Appender[] appenders
+ Filter filter
+ LoggerConfig[] loggerConfigs
+ LoggerConfig getLoggerConfig(String name)
+ StrSubstitutor substitutor
+ }
+
+ note left of Configuration
+ Encapsulates components compiled
+ from a user-provided configuration
+ file (e.g., `log4j2.xml`)
+ end note
+
+ Configuration --> Filter
+
+ Configuration --> "0..*" Appender
+
+ Configuration --> "0..*" LoggerConfig
+
+ Configuration --> StrSubstitutor
+
+ class Appender {
+ AbstractManager manager
+ Layout layout
+ Filter filter
+ void append(LogEvent)
+ }
+
+ Appender --> Layout
+
+ Appender --> Filter
+
+ class Layout {
+ byte[] encode(LogEvent)
+ }
+
+ class Filter {
+ Result filter(LogEvent)
+ }
+
+ note right of Filter
+ Note that a `Filter` can
+ be provided at 4 levels:
+ 1. `Configuration`
+ 2. `LoggerConfig`
+ 3. `AppenderControl`
+ 4. `Appender`
+ end note
+
+ class LoggerConfig {
+ AppenderControl[] appenderControls
+ Level level
+ Filter filter
+ void log(LogEvent)
+ }
+
+ LoggerConfig -[#green,thickness=6]-> "0..*" AppenderControl
+
+ LoggerConfig --> Filter
+
+ class AppenderControl {
+ Appender appender
+ Filter filter
+ void append(LogEvent)
+ }
+
+ note right of AppenderControl
+ Decorates an `Appender`
+ with a `Filter`
+ end note
+
+ AppenderControl -[#green,thickness=6]-> Appender
+
+ AppenderControl --> Filter
+
+ class StrSubstitutor {
+ Interpolator interpolator
+ String replace(String input)
+ }
+
+ note right of StrSubstitutor
+ Responsible for
+ property substitution
+ (e.g., `${env:USER}`)
+ end note
+
+ StrSubstitutor --> Interpolator
+
+ class Interpolator {
+ StrLookup[] lookups
+ String lookup(String input)
+ }
+
+ Interpolator --> "0..*" StrLookup
+
+ class StrLookup {
+ String lookup(String input)
+ }
+}
+
+LoggerContext --> Configuration
+
+class Logger {
+ void log(Level level, Message message)
+}
+
+note right of Logger
+ The main API entry point
+ users interact with
+end note
+
+Logger -[#green,thickness=6]-> LoggerConfig : delegates `log()`
+
+class AbstractManager {
+}
+
+Appender -[#green,thickness=6]-> AbstractManager
+
+@enduml</pre>
</div>
-<div class="title">Figure 1. An overview of major classes and their
relation</div>
</div>
<div class="paragraph">
<p>At a really high level,</p>
@@ -387,7 +522,7 @@ Both can be created either directly (i.e.,
programmatically) or indirectly at fi
<p><a href="#Configuration"><code>Configuration</code></a> is equipped with <a
href="#StrSubstitutor"><code>StrSubstitutor</code> et al.</a> to allow property
substitution in <code>String</code>-typed values.</p>
</li>
<li>
-<p>A typical <code>log()</code> call triggers a chain of invocations through
classes <code>Logger</code>, <code>LoggerConfig</code>,
<code>AppenderControl</code>, <code>Appender</code>, and
<code>AbstractManager</code> in order – this is depicted using green arrows in
<a href="#architecture-diagram">Figure 1</a>.</p>
+<p>A typical <code>log()</code> call triggers a chain of invocations through
classes <code>Logger</code>, <code>LoggerConfig</code>,
<code>AppenderControl</code>, <code>Appender</code>, and
<code>AbstractManager</code> in order – this is depicted using green arrows in
<a href="#architecture-diagram">An overview of major classes and their
relation</a>.</p>
</li>
</ul>
</div>
@@ -403,11 +538,35 @@ Both can be created either directly (i.e.,
programmatically) or indirectly at fi
<p>The <a
href="../javadoc/log4j-api/org/apache/logging/log4j/spi/LoggerContext.html"><code>LoggerContext</code></a>
acts as the anchor point for the logging system.
It is associated with an active <a
href="#Configuration"><code>Configuration</code></a> and is primarily
responsible for instantiating <a href="#Logger"><code>Logger</code></a>s.</p>
</div>
-<div id="LoggerContext-diagram" class="imageblock kroki">
+<div id="LoggerContext-diagram" class="literalblock kroki-error">
+<div class="title"><code>LoggerContext</code> and other directly related
classes</div>
<div class="content">
-<img src="../_images/diag-fd71b342bbb89cd55a1ddb592976b9ac26b6348e.svg"
alt="`LoggerContext` and other directly related classes">
+<pre>@startuml
+
+class LoggerContext #line.bold {
+ Configuration config
+ Logger[] loggers
+ Logger getLogger(String name)
+}
+
+LoggerContext --> Configuration
+
+LoggerContext --> "0..*" Logger
+
+class Configuration {
+ Appender[] appenders
+ Filter filter
+ LoggerConfig[] loggerConfigs
+ LoggerConfig getLoggerConfig(String name)
+ StrSubstitutor substitutor
+}
+
+class Logger {
+ void log(Level level, Message message)
+}
+
+@enduml</pre>
</div>
-<div class="title">Figure 2. <code>LoggerContext</code> and other directly
related classes</div>
</div>
<div class="paragraph">
<p>In most cases, applications have a single global <code>LoggerContext</code>.
@@ -423,11 +582,58 @@ Refer to <a href="../jakarta.html#log-separation"
class="xref page">Log Separati
<p>Every <a href="#LoggerContext"><code>LoggerContext</code></a> is associated
with an active <a
href="../javadoc/log4j-core/org/apache/logging/log4j/core/config/Configuration.html"><code>Configuration</code></a>.
It models the configuration of all appenders, layouts, filters, loggers, and
contains the reference to <a href="#StrSubstitutor"><code>StrSubstitutor</code>
et al.</a>.</p>
</div>
-<div id="Configuration-diagram" class="imageblock kroki">
+<div id="Configuration-diagram" class="literalblock kroki-error">
+<div class="title"><code>Configuration</code> and other directly related
classes</div>
<div class="content">
-<img src="../_images/diag-5ffe377615be9b0375b26533bbf7b10507dc946b.svg"
alt="`Configuration` and other directly related classes">
+<pre>@startuml
+
+class LoggerContext {
+ Configuration config
+ Logger[] loggers
+ Logger getLogger(String name)
+}
+
+LoggerContext --> Configuration
+
+class Configuration #line.bold {
+ Appender[] appenders
+ Filter filter
+ LoggerConfig[] loggerConfigs
+ LoggerConfig getLoggerConfig(String name)
+ StrSubstitutor substitutor
+}
+
+Configuration --> "0..*" Filter
+
+Configuration --> "0..*" Appender
+
+Configuration --> "0..*" LoggerConfig
+
+Configuration --> StrSubstitutor
+
+class Appender {
+ Layout layout
+ void append(LogEvent)
+}
+
+class Filter {
+ Result filter(LogEvent)
+}
+
+class LoggerConfig {
+ AppenderRef[] appenderRefs
+ AppenderControl[] appenderControls
+ Level level
+ Filter filter
+ void log(LogEvent)
+}
+
+class StrSubstitutor {
+ Interpolator interpolator
+ String replace(String input)
+}
+@enduml</pre>
</div>
-<div class="title">Figure 3. <code>Configuration</code> and other directly
related classes</div>
</div>
<div class="paragraph">
<p>Configuration of Log4j Core is typically done at application initialization.
@@ -464,11 +670,41 @@ Threads that already started processing a log event will
either:</p>
</li>
</ul>
</div>
-<div class="imageblock kroki">
+<div class="literalblock kroki-error">
+<div class="title">Overview of the reconfiguration process</div>
<div class="content">
-<img src="../_images/diag-01168003b98f120d2f0736e5172de8e1218f189e.svg"
alt="Overview of the reconfiguration process">
+<pre>@startuml
+left to right direction
+
+package LoggerContext {
+ object Logger
+
+ package "New Configuration" as c2 {
+ object "LoggerConfig" as lc2
+ object "AppenderControl" as ac2
+ object "Appender" as app2
+ }
+
+ package "Old Configuration" as c1 {
+ object "LoggerConfig" as lc1
+ object "AppenderControl" as ac1
+ object "Appender" as app1
+ }
+}
+
+object AbstractManager
+
+Logger ..> lc1
+lc1 --> ac1
+ac1 --> app1
+app1 --> AbstractManager
+
+Logger --> lc2
+lc2 --> ac2
+ac2 --> app2
+app2 --> AbstractManager
+@enduml</pre>
</div>
-<div class="title">Figure 4. Overview of the reconfiguration process</div>
</div>
</div>
</div>
@@ -482,11 +718,35 @@ They are created by calling one of the
<code>getLogger()</code> methods of <a hr
The <code>Logger</code> itself performs no direct actions.
It simply has a name and is associated with a <a
href="#LoggerConfig"><code>LoggerConfig</code></a>.</p>
</div>
-<div id="Logger-diagram" class="imageblock kroki">
+<div id="Logger-diagram" class="literalblock kroki-error">
+<div class="title"><code>Logger</code> and other directly related classes</div>
<div class="content">
-<img src="../_images/diag-77a13b00749af95e3ed0eefd605a73f25d70973c.svg"
alt="`Logger` and other directly related classes">
+<pre>@startuml
+
+class LoggerContext {
+ Configuration config
+ Logger[] loggers
+ Logger getLogger(String name)
+}
+
+LoggerContext --> "0..*" Logger
+
+class LoggerConfig {
+ AppenderRef[] appenderRefs
+ AppenderControl[] appenderControls
+ Level level
+ Filter filter
+ void log(LogEvent)
+}
+
+class Logger #line.bold {
+ void log(Level level, Message message)
+}
+
+Logger -[#green,thickness=6]-> LoggerConfig : delegates `log()`
+
+@enduml</pre>
</div>
-<div class="title">Figure 5. <code>Logger</code> and other directly related
classes</div>
</div>
<div class="paragraph">
<p>The hierarchy between <a
href="#LoggerConfig"><code>LoggerConfig</code></a>s, implies the very same
hierarchy between <code>Logger</code>s too.
@@ -524,11 +784,59 @@ A <code>LoggerConfig</code> essentially contains</p>
</li>
</ul>
</div>
-<div id="LoggerConfig-diagram" class="imageblock kroki">
+<div id="LoggerConfig-diagram" class="literalblock kroki-error">
+<div class="title"><code>LoggerConfig</code> and other directly related
classes</div>
<div class="content">
-<img src="../_images/diag-73365a4d8197b5441a98fd1d661b07760da178be.svg"
alt="`LoggerConfig` and other directly related classes">
+<pre>@startuml
+
+class Configuration {
+ Appender[] appenders
+ Filter filter
+ LoggerConfig[] loggerConfigs
+ LoggerConfig getLoggerConfig(String name)
+ StrSubstitutor substitutor
+}
+
+Configuration --> "0..*" LoggerConfig
+
+class Filter {
+ Result filter(LogEvent)
+}
+
+class LoggerConfig #line.bold {
+ AppenderRef[] appenderRefs
+ AppenderControl[] appenderControls
+ Level level
+ Filter filter
+ void log(LogEvent)
+}
+
+LoggerConfig --> "0..*" AppenderRef
+
+LoggerConfig -[#green,thickness=6]-> "0..*" AppenderControl
+
+LoggerConfig --> Filter
+
+class AppenderRef {
+ String appenderName
+ Level level
+ Filter filter
+}
+
+class AppenderControl {
+ Appender appender
+ Filter filter
+ void append(LogEvent)
+}
+
+class Logger {
+ void log(Level level, Message message)
+}
+
+Logger -[#green,thickness=6]-> LoggerConfig : delegates `log()`
+
+@enduml</pre>
</div>
-<div class="title">Figure 6. <code>LoggerConfig</code> and other directly
related classes</div>
</div>
<div class="sect2">
<h3 id="logger-hierarchy"><a class="anchor"
href="#logger-hierarchy"></a>Logger hierarchy</h3>
@@ -537,13 +845,19 @@ A <code>LoggerConfig</code> essentially contains</p>
A <code>LoggerConfig</code> called <code>child</code> is said to be parented
by <code>parent</code>, if <code>parent</code> has the <em>longest prefix
match</em> on name.
This match is case-sensitive and performed after tokenizing the name by
splitting it from <code>.</code> (dot) characters.
For a positive name match, tokens must match exhaustively.
-See <a href="#logger-hiearchy-diagram">Figure 7</a> for an example.</p>
+See <a href="#logger-hiearchy-diagram">Example hierarchy of loggers named
<code>X</code>, <code>X.Y</code>, <code>X.Y.Z</code>, and <code>X.YZ</code></a>
for an example.</p>
</div>
-<div id="logger-hiearchy-diagram" class="imageblock kroki">
+<div id="logger-hiearchy-diagram" class="literalblock kroki-error">
+<div class="title">Example hierarchy of loggers named <code>X</code>,
<code>X.Y</code>, <code>X.Y.Z</code>, and <code>X.YZ</code></div>
<div class="content">
-<img src="../_images/diag-892fd9dbd9ea6bece55c1d4078ae1de2edd5c689.svg"
alt="Example hierarchy of loggers named `X`, `X.Y`, `X.Y.Z`, and `X.YZ`">
+<pre>@startmindmap
+* root
+** X
+*** X.Y
+**** X.Y.Z
+*** X.YZ
+@endmindmap</pre>
</div>
-<div class="title">Figure 7. Example hierarchy of loggers named
<code>X</code>, <code>X.Y</code>, <code>X.Y.Z</code>, and
<code>X.YZ</code></div>
</div>
<div class="paragraph">
<p>If a <code>LoggerConfig</code> is not provided an explicit level, it will
be inherited from its parent.
@@ -785,11 +1099,57 @@ That is, we will examine the effective level of a
<code>Logger</code> in various
<div class="paragraph">
<p>In addition to <a href="#LoggerConfig">the level-based filtering
facilitated by <code>LoggerConfig</code></a>, Log4j provides <a
href="../javadoc/log4j-core/org/apache/logging/log4j/core/Filter.html"><code>Filter</code></a>s
to evaluate the parameters of a logging call (i.e., context-wide filter) or a
log event, and decide if it should be processed further in the pipeline.</p>
</div>
-<div id="Filter-diagram" class="imageblock kroki">
+<div id="Filter-diagram" class="literalblock kroki-error">
+<div class="title"><code>Filter</code> and other directly related classes</div>
<div class="content">
-<img src="../_images/diag-581e854ee8ecdb00104bac5affda10a653d8f76d.svg"
alt="`Filter` and other directly related classes">
+<pre>@startuml
+
+class Configuration {
+ Appender[] appenders
+ Filter filter
+ LoggerConfig[] loggerConfigs
+ LoggerConfig getLoggerConfig(String name)
+ StrSubstitutor substitutor
+}
+
+Configuration --> Filter
+
+Configuration --> "0..*" LoggerConfig
+
+class Filter #line.bold {
+ Result filter(LogEvent)
+}
+
+class LoggerConfig {
+ AppenderRef[] appenderRefs
+ AppenderControl[] appenderControls
+ Level level
+ Filter filter
+ void log(LogEvent)
+}
+
+LoggerConfig --> "0..*" AppenderRef
+
+LoggerConfig -[#green,thickness=6]-> "0..*" AppenderControl
+
+LoggerConfig --> Filter
+
+class AppenderRef {
+ String appenderName
+ Level level
+ Filter filter
+}
+
+class AppenderControl {
+ Filter filter
+}
+
+AppenderRef --> Filter
+
+AppenderControl --> Filter
+
+@enduml</pre>
</div>
-<div class="title">Figure 8. <code>Filter</code> and other directly related
classes</div>
</div>
<div class="paragraph">
<p>Refer to <a href="filters.html" class="xref page">Filters</a> for further
information.</p>
@@ -804,11 +1164,74 @@ That is, we will examine the effective level of a
<code>Logger</code> in various
While doing so, they typically use <a href="#Layout"><code>Layout</code></a>s
to encode the log event.
See <a href="appenders.html" class="xref page">Appenders</a> for the complete
guide.</p>
</div>
-<div id="Appender-diagram" class="imageblock kroki">
+<div id="Appender-diagram" class="literalblock kroki-error">
+<div class="title"><code>Appender</code> and other directly related
classes</div>
<div class="content">
-<img src="../_images/diag-63d449f3bcd24cfa522a41f6e2f545416de30322.svg"
alt="`Appender` and other directly related classes">
+<pre>@startuml
+
+class Configuration {
+ Appender[] appenders
+ Filter filter
+ LoggerConfig[] loggerConfigs
+ LoggerConfig getLoggerConfig(String name)
+ StrSubstitutor substitutor
+}
+
+Configuration --> "0..*" Filter
+
+Configuration --> "0..*" Appender
+
+Configuration --> "0..*" LoggerConfig
+
+class Appender #line.bold {
+ Layout layout
+ void append(LogEvent)
+}
+
+Appender -[#green,thickness=6]-> Layout
+
+class Layout {
+ byte[] encode(LogEvent)
+}
+
+class Filter {
+ Result filter(LogEvent)
+}
+
+class LoggerConfig {
+ AppenderRef[] appenderRefs
+ AppenderControl[] appenderControls
+ Level level
+ Filter filter
+ void log(LogEvent)
+}
+
+LoggerConfig --> "0..*" AppenderRef
+
+LoggerConfig -[#green,thickness=6]-> "0..*" AppenderControl
+
+LoggerConfig --> Filter
+
+class AppenderRef {
+ String appenderName
+ Level level
+ Filter filter
+}
+
+AppenderRef --> Filter
+
+class AppenderControl {
+ Appender appender
+ Filter filter
+ void append(LogEvent)
+}
+
+AppenderControl -[#green,thickness=6]-> Appender
+
+AppenderControl --> Filter
+
+@enduml</pre>
</div>
-<div class="title">Figure 9. <code>Appender</code> and other directly related
classes</div>
</div>
<div class="paragraph">
<p>An <code>Appender</code> can be added to a <a
href="#Logger"><code>Logger</code></a> by calling the <a
href="../javadoc/log4j-core/org/apache/logging/log4j/core/config/Configuration.html#addLoggerAppender(org.apache.logging.log4j.core.Logger,%20org.apache.logging.log4j.core.Appender)"><code>addLoggerAppender()</code></a>
method of the current <a href="#Configuration"><code>Configuration</code></a>.
@@ -831,17 +1254,25 @@ However, if an ancestor of the <code>LoggerConfig</code>
associated with <code>L
<details>
<summary class="title">Click for an example on appender additivity</summary>
<div class="content">
-<div id="appender-additivity-diagram" class="imageblock kroki">
+<div id="appender-additivity-diagram" class="literalblock kroki-error">
+<div class="title">Example hierarchy of logger configurations to demonstrate
appender additivity</div>
<div class="content">
-<img src="../_images/diag-58c484caf8cd616db4f1c7ed31b51c123b5859d4.svg"
alt="Example hierarchy of logger configurations to demonstrate appender
additivity">
+<pre>@startmindmap
+* root
+** A
+*** A.B1 (additivity=false)
+**** A.B1.C
+***** A.B1.C.D
+*** A.B2.C
+**** A.B2.C.D (additivity=false)
+@endmindmap</pre>
</div>
-<div class="title">Figure 10. Example hierarchy of logger configurations to
demonstrate appender additivity</div>
</div>
<div class="paragraph">
-<p>In <a href="#appender-additivity-diagram">Figure 10</a>, the effective
appenders for each logger configuration are as follows:</p>
+<p>In <a href="#appender-additivity-diagram">Example hierarchy of logger
configurations to demonstrate appender additivity</a>, the effective appenders
for each logger configuration are as follows:</p>
</div>
<table class="tableblock frame-all grid-all stretch">
-<caption class="title">Table 6. Effective appenders of logger configurations
in <a href="#appender-additivity-diagram">Figure 10</a></caption>
+<caption class="title">Table 6. Effective appenders of logger configurations
in <a href="#appender-additivity-diagram">Example hierarchy of logger
configurations to demonstrate appender additivity</a></caption>
<colgroup>
<col style="width: 14.2857%;">
<col style="width: 14.2857%;">
@@ -973,11 +1404,24 @@ Since during a <a
href="#reconfiguration">reconfiguration event</a> multiple ins
<div class="paragraph">
<p>An <a href="#Appender"><code>Appender</code></a> uses a
<strong>layout</strong> to encode a <a
href="../javadoc/log4j-core/org/apache/logging/log4j/core/LogEvent.html"><code>LogEvent</code></a>
into a form that meets the needs of whatever will be consuming the log
event.</p>
</div>
-<div id="Layout-diagram" class="imageblock kroki">
+<div id="Layout-diagram" class="literalblock kroki-error">
+<div class="title"><code>Layout</code> and other directly related classes</div>
<div class="content">
-<img src="../_images/diag-232cdf1d44336897239fa03f6521cc730f38f32d.svg"
alt="`Layout` and other directly related classes">
+<pre>@startuml
+
+class Appender {
+ Layout layout
+ void append(LogEvent)
+}
+
+Appender -[#green,thickness=6]-> Layout
+
+class Layout #line.bold {
+ byte[] encode(LogEvent)
+}
+
+@enduml</pre>
</div>
-<div class="title">Figure 11. <code>Layout</code> and other directly related
classes</div>
</div>
<div class="paragraph">
<p>Refer to <a href="layouts.html" class="xref page">Layouts</a> for
details.</p>
@@ -992,11 +1436,41 @@ Since during a <a
href="#reconfiguration">reconfiguration event</a> multiple ins
It accepts an <a
href="../javadoc/log4j-core/org/apache/logging/log4j/core/lookup/Interpolator.html"><code>Interpolator</code></a>
to determine if a key maps to a certain value.
<code>Interpolator</code> is essentially a facade delegating to multiple <a
href="../javadoc/log4j-core/org/apache/logging/log4j/core/lookup/StrLookup.html"><code>StrLookup</code></a>
(aka. <em>lookup</em>) implementations.</p>
</div>
-<div id="StrSubstitutor-diagram" class="imageblock kroki">
+<div id="StrSubstitutor-diagram" class="literalblock kroki-error">
+<div class="title"><code>StrSubstitutor</code> et al. and other directly
related classes</div>
<div class="content">
-<img src="../_images/diag-7a08e5a79432e9299cc0d9671bd39677be5618e8.svg"
alt="`StrSubstitutor` et al. and other directly related classes">
+<pre>@startuml
+
+class Configuration {
+ Appender[] appenders
+ Filter[] filters
+ LoggerConfig[] loggerConfigs
+ LoggerConfig getLoggerConfig(String name)
+ StrSubstitutor substitutor
+}
+
+Configuration --> StrSubstitutor
+
+class StrSubstitutor #line.bold {
+ Interpolator interpolator
+ String replace(String input)
+}
+
+StrSubstitutor --> Interpolator
+
+class Interpolator {
+ StrLookup[] lookups
+ String lookup(String input)
+}
+
+Interpolator --> "0..*" StrLookup
+
+class StrLookup {
+ String lookup(String input)
+}
+
+@enduml</pre>
</div>
-<div class="title">Figure 12. <code>StrSubstitutor</code> et al. and other
directly related classes</div>
</div>
<div class="paragraph">
<p>See <a href="configuration.html#property-substitution" class="xref
page">how property substitution works</a> and <a href="lookups.html"
class="xref page">the predefined lookups</a> for further information.</p>
diff --git a/manual/filters.html b/manual/filters.html
index 779463381e..44a35c31d8 100644
--- a/manual/filters.html
+++ b/manual/filters.html
@@ -452,9 +452,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">
@@ -526,9 +548,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">
@@ -543,9 +585,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">
@@ -566,9 +632,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 1207c47fed..db0e5275a5 100644
--- a/manual/installation.html
+++ b/manual/installation.html
@@ -460,11 +460,63 @@ 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-a51b68065f249459078382aa4c61888857f01b2c.svg"
alt="Visualization of a typical Log4j Core installation with SLF4J, JUL, and
JPL bridges">
+<pre>@startuml
+
+frame "Compile time" {
+ [Application] --> [Log4j API] : logs to
+
+ [Log4j API] #Cyan
+
+ [SLF4J] #Cyan
+
+ [Library 1] --> [SLF4J] : logs to
+ [Application] --> [Library 1] : uses
+ [Application] --> [Library 2] : uses
+ [Application] --> [Library 3] : uses
+}
+
+frame Runtime {
+
+ [Log4j Core] <.. [Log4j API] : is implemented by
+ [Log4j Core] <.. (log4j2.xml) : is provided to
+ [Log4j Core] #LightGreen
+
+ [JPL-to-Log4j] ..> [Log4j Core] : forwards to
+ [JPL-to-Log4j] #Yellow
+
+ [SLF4J-to-Log4j] ..> [Log4j Core] : forwards to
+ [SLF4J-to-Log4j] #Yellow
+
+ [JUL-to-Log4j] ..> [Log4j Core] : forwards to
+ [JUL-to-Log4j] #Yellow
+
+ frame JRE {
+ [JPL] #Cyan
+ [JUL] #Cyan
+ }
+
+}
+
+[Library 2] --> [JUL] : logs to
+[Library 3] --> [JPL] : logs to
+
+[JPL] ..> [JPL-to-Log4j] : is implemented by
+[JUL] ..> [JUL-to-Log4j] : is implemented by
+[SLF4J] ..> [SLF4J-to-Log4j] : is implemented by
+
+legend top right
+ | <#LightGreen> | Logging implementation |
+ | <#Yellow> | Logging bridge |
+ | <#Cyan> | Logging API |
+ | <size:18><U+2192></size> | Compile-time usage |
+ | <size:18><U+21E2></size> | Runtime usage |
+endlegend
+
+@enduml</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 7a56a756cc..551e9d0f52 100644
--- a/manual/lookups.html
+++ b/manual/lookups.html
@@ -358,11 +358,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>
diff --git a/manual/pattern-layout.html b/manual/pattern-layout.html
index d604ef496b..8f5b4e5ed4 100644
--- a/manual/pattern-layout.html
+++ b/manual/pattern-layout.html
@@ -677,7 +677,7 @@ Setting this to <code>false</code> disables this behavior
and allows you to excl
</tbody>
</table>
<div class="paragraph">
-<p>If <code>true</code>, do not output ANSI escape codes</p>
+<p>If <code>true</code>, do not output ANSI escape codes.</p>
</div>
</div>
<div class="sect3">
@@ -699,7 +699,7 @@ Setting this to <code>false</code> disables this behavior
and allows you to excl
</tbody>
</table>
<div class="paragraph">
-<p>If <code>true</code> and <code>System.console()</code> is null, do not
output ANSI escape codes</p>
+<p>If <code>true</code> and <code>System.console()</code> is
<code>null</code>, do not output ANSI escape codes</p>
</div>
</div>
</div>
@@ -2683,28 +2683,15 @@ characters, then truncate from the end.</p></td>
<div class="sect3">
<h4 id="jansi"><a class="anchor" href="#jansi"></a>ANSI styling on Windows</h4>
<div class="paragraph">
-<p>ANSI escape sequences are supported natively on many platforms, but not by
default on Windows.
-To enable ANSI support add the
-<a href="http://fusesource.github.io/jansi/">Jansi</a>
-dependency to your application, and set <a
href="systemproperties.html#log4j2.skipJansi" class="xref page">the
<code>log4j2.skipJansi</code> system property</a> to <code>false</code>.
-This allows Log4j to use Jansi to add ANSI escape codes when writing to the
console.</p>
+<p>ANSI escape sequences are supported natively on many platforms, but are
disabled by default in <code>cmd.exe</code> on Windows.
+To enable ANSI escape sequences, create a registry key named
<code>HKEY_CURRENT_USER\Console\VirtualTerminalLevel</code> of type
<code>DWORD</code> and set its value to <code>0x1</code>.</p>
</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
<div class="paragraph">
-<p>Before Log4j 2.10, Jansi was enabled by default.
-The fact that Jansi requires native code means that Jansi can only be loaded
by a single class loader.
-For web applications, this means the Jansi jar has to be in the web
container’s classpath.
-To avoid causing problems for web applications, Log4j no longer automatically
tries to load Jansi without explicit configuration from Log4j 2.10 onward.</p>
-</div>
-</td>
-</tr>
-</table>
+<p>See
+<a
href="https://devblogs.microsoft.com/commandline/understanding-windows-console-host-settings/">Understanding
Windows Console Host Settings</a>
+and
+<a
href="https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences">Console
Virtual Terminal Sequences</a>
+Microsoft documentation for more details.</p>
</div>
</div>
</div>
diff --git a/manual/systemproperties.html b/manual/systemproperties.html
index 5b09a142a4..0bb154f3b9 100644
--- a/manual/systemproperties.html
+++ b/manual/systemproperties.html
@@ -1752,51 +1752,6 @@ utility class can be used by users to format primitive
values without incurring
</div>
</div>
<div class="sect2">
-<h3 id="properties-jansi"><a class="anchor"
href="#properties-jansi"></a>JANSI</h3>
-<div class="paragraph">
-<p>If the <a href="https://fusesource.github.io/jansi/">JANSI</a> library is
on the runtime classpath of the application, the following property can be used
to control its usage:</p>
-</div>
-<div class="sect3">
-<h4 id="log4j2.skipJansi"><a class="anchor"
href="#log4j2.skipJansi"></a><code>log4j2.skipJansi</code></h4>
-<table class="tableblock frame-all grid-all stretch">
-<colgroup>
-<col style="width: 16.6666%;">
-<col style="width: 83.3334%;">
-</colgroup>
-<tbody>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Env.
variable</p></th>
-<td class="tableblock halign-left valign-top"><p
class="tableblock"><code>LOG4J_SKIP_JANSI</code></p></td>
-</tr>
-<tr>
-<th class="tableblock halign-left valign-top"><p
class="tableblock">Type</p></th>
-<td class="tableblock halign-left valign-top"><p
class="tableblock"><code>boolean</code></p></td>
-</tr>
-<tr>
-<th class="tableblock halign-left valign-top"><p class="tableblock">Default
value</p></th>
-<td class="tableblock halign-left valign-top"><p
class="tableblock"><code>true</code></p></td>
-</tr>
-</tbody>
-</table>
-<div class="paragraph">
-<p>If the following conditions are satisfied:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Log4j runs on Windows,</p>
-</li>
-<li>
-<p>this property is set to <code>false</code>,</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Log4j will use the JANSI library to color the output of the console
appender.</p>
-</div>
-</div>
-</div>
-<div class="sect2">
<h3 id="properties-jmx"><a class="anchor" href="#properties-jmx"></a>JMX</h3>
<div class="sect3">
<h4 id="log4j2.disableJmx"><a class="anchor"
href="#log4j2.disableJmx"></a><code>log4j2.disableJmx</code></h4>
diff --git a/migrate-from-logback.html b/migrate-from-logback.html
index 0e5f2c3f82..e5db15c021 100644
--- a/migrate-from-logback.html
+++ b/migrate-from-logback.html
@@ -409,11 +409,63 @@ For instance, <code>log4j-slf4j2-impl</code>
<em>bridges</em> SLF4J calls to Log
<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-a51b68065f249459078382aa4c61888857f01b2c.svg"
alt="Visualization of a typical Log4j Core installation with SLF4J, JUL, and
JPL bridges">
+<pre>@startuml
+
+frame "Compile time" {
+ [Application] --> [Log4j API] : logs to
+
+ [Log4j API] #Cyan
+
+ [SLF4J] #Cyan
+
+ [Library 1] --> [SLF4J] : logs to
+ [Application] --> [Library 1] : uses
+ [Application] --> [Library 2] : uses
+ [Application] --> [Library 3] : uses
+}
+
+frame Runtime {
+
+ [Log4j Core] <.. [Log4j API] : is implemented by
+ [Log4j Core] <.. (log4j2.xml) : is provided to
+ [Log4j Core] #LightGreen
+
+ [JPL-to-Log4j] ..> [Log4j Core] : forwards to
+ [JPL-to-Log4j] #Yellow
+
+ [SLF4J-to-Log4j] ..> [Log4j Core] : forwards to
+ [SLF4J-to-Log4j] #Yellow
+
+ [JUL-to-Log4j] ..> [Log4j Core] : forwards to
+ [JUL-to-Log4j] #Yellow
+
+ frame JRE {
+ [JPL] #Cyan
+ [JUL] #Cyan
+ }
+
+}
+
+[Library 2] --> [JUL] : logs to
+[Library 3] --> [JPL] : logs to
+
+[JPL] ..> [JPL-to-Log4j] : is implemented by
+[JUL] ..> [JUL-to-Log4j] : is implemented by
+[SLF4J] ..> [SLF4J-to-Log4j] : is implemented by
+
+legend top right
+ | <#LightGreen> | Logging implementation |
+ | <#Yellow> | Logging bridge |
+ | <#Cyan> | Logging API |
+ | <size:18><U+2192></size> | Compile-time usage |
+ | <size:18><U+21E2></size> | Runtime usage |
+endlegend
+
+@enduml</pre>
</div>
-<div class="title">Figure 1. Visualization of a typical Log4j Core
installation with SLF4J, JUL, and JPL bridges</div>
</div>
</div>
</details>
diff --git a/migrate-from-slf4j.html b/migrate-from-slf4j.html
index 8279c4bc44..6a4b6ec02d 100644
--- a/migrate-from-slf4j.html
+++ b/migrate-from-slf4j.html
@@ -409,11 +409,63 @@ For instance, <code>log4j-slf4j2-impl</code>
<em>bridges</em> SLF4J calls to Log
<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-a51b68065f249459078382aa4c61888857f01b2c.svg"
alt="Visualization of a typical Log4j Core installation with SLF4J, JUL, and
JPL bridges">
+<pre>@startuml
+
+frame "Compile time" {
+ [Application] --> [Log4j API] : logs to
+
+ [Log4j API] #Cyan
+
+ [SLF4J] #Cyan
+
+ [Library 1] --> [SLF4J] : logs to
+ [Application] --> [Library 1] : uses
+ [Application] --> [Library 2] : uses
+ [Application] --> [Library 3] : uses
+}
+
+frame Runtime {
+
+ [Log4j Core] <.. [Log4j API] : is implemented by
+ [Log4j Core] <.. (log4j2.xml) : is provided to
+ [Log4j Core] #LightGreen
+
+ [JPL-to-Log4j] ..> [Log4j Core] : forwards to
+ [JPL-to-Log4j] #Yellow
+
+ [SLF4J-to-Log4j] ..> [Log4j Core] : forwards to
+ [SLF4J-to-Log4j] #Yellow
+
+ [JUL-to-Log4j] ..> [Log4j Core] : forwards to
+ [JUL-to-Log4j] #Yellow
+
+ frame JRE {
+ [JPL] #Cyan
+ [JUL] #Cyan
+ }
+
+}
+
+[Library 2] --> [JUL] : logs to
+[Library 3] --> [JPL] : logs to
+
+[JPL] ..> [JPL-to-Log4j] : is implemented by
+[JUL] ..> [JUL-to-Log4j] : is implemented by
+[SLF4J] ..> [SLF4J-to-Log4j] : is implemented by
+
+legend top right
+ | <#LightGreen> | Logging implementation |
+ | <#Yellow> | Logging bridge |
+ | <#Cyan> | Logging API |
+ | <size:18><U+2192></size> | Compile-time usage |
+ | <size:18><U+21E2></size> | Runtime usage |
+endlegend
+
+@enduml</pre>
</div>
-<div class="title">Figure 1. Visualization of a typical Log4j Core
installation with SLF4J, JUL, and JPL bridges</div>
</div>
</div>
</details>
diff --git a/plugin-reference.html b/plugin-reference.html
index 2a82d79e07..f29adf6f3e 100644
--- a/plugin-reference.html
+++ b/plugin-reference.html
@@ -16136,10 +16136,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 JSON,
defaults to "true".</p>
+<p>If "true", includes the stacktrace of any Throwable in the generated data,
defaults to "true".</p>
</div>
<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></td>
</tr>
<tr>
@@ -17433,10 +17433,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 JSON,
defaults to "true".</p>
+<p>If "true", includes the stacktrace of any Throwable in the generated data,
defaults to "true".</p>
</div>
<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></td>
</tr>
<tr>
@@ -17632,10 +17632,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 JSON,
defaults to "true".</p>
+<p>If "true", includes the stacktrace of any Throwable in the generated data,
defaults to "true".</p>
</div>
<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></td>
</tr>
<tr>
diff --git a/release-notes.html b/release-notes.html
index 791edb96f7..71cc0c64a4 100644
--- a/release-notes.html
+++ b/release-notes.html
@@ -376,6 +376,14 @@ The support for the <code>{ansi}</code> option in
exception converters is remove
</div>
</div>
<div class="sect2">
+<h3 id="_ansi_support_on_windows"><a class="anchor"
href="#_ansi_support_on_windows"></a>ANSI support on Windows</h3>
+<div class="paragraph">
+<p>Since 2017, Windows 10 and newer have offered native support for ANSI
escapes.
+The support for the outdated Jansi 1.x library has therefore been removed.
+See <a href="manual/pattern-layout.html#jansi" class="xref page">ANSI styling
on Windows</a> for more information.</p>
+</div>
+</div>
+<div class="sect2">
<h3 id="release-notes-2-x-x-added"><a class="anchor"
href="#release-notes-2-x-x-added"></a>Added</h3>
<div class="ulist">
<ul>
@@ -393,9 +401,15 @@ The support for the <code>{ansi}</code> option in
exception converters is remove
<div class="ulist">
<ul>
<li>
+<p>Remove JAnsi library support. Windows 10 console has supported ANSI escapes
since 2017. (<a
href="https://github.com/apache/logging-log4j2/issues/1736">1736</a>)</p>
+</li>
+<li>
<p>Consolidate exception rendering logic and improve circular reference
support in Pattern Layout (<a
href="https://github.com/apache/logging-log4j2/pull/2691">2691</a>)</p>
</li>
<li>
+<p>Rewrite <code>JAnsiTextRenderer</code> to work without JAnsi library. (<a
href="https://github.com/apache/logging-log4j2/pull/2916">2916</a>)</p>
+</li>
+<li>
<p>Change the whitespace prefixing logic in Pattern Layout (<a
href="https://github.com/apache/logging-log4j2/pull/3045">3045</a>)</p>
</li>
</ul>
diff --git a/sitemap.xml b/sitemap.xml
index ac9a419de8..898142536f 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -2,238 +2,238 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://logging.apache.org/log4j/2.x/components.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/development.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/download.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/faq.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/graalvm.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/hibernate.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/index.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/jakarta.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/javadoc.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-iostreams.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-jul.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-spring-boot.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-spring-cloud-config-client.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-to-jul.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/api.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/appenders.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/appenders/database.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/appenders/delegating.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/appenders/file.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/appenders/message-queue.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/appenders/network.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/appenders/rolling-file.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/architecture.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/async.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/compatibility.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/config-intro.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/configuration.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/customconfig.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/customloglevels.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/eventlogging.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/extending.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/filters.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/flowtracing.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/garbagefree.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/getting-started.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/implementation.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/index.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/installation.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/jmx.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/json-template-layout.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/layouts.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/logbuilder.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/lookups.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/markers.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/messages.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/pattern-layout.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/performance.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/plugins.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/scripts.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/simple-logger.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/status-logger.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/systemproperties.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/thread-context.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/migrate-from-log4j1.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/migrate-from-logback.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/migrate-from-slf4j.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/plugin-reference.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/release-notes.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/soa.html</loc>
-<lastmod>2024-10-16T06:44:46.355Z</lastmod>
+<lastmod>2024-10-16T09:51:23.322Z</lastmod>
</url>
</urlset>