You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gi...@apache.org on 2024/05/24 07:38:52 UTC
(logging-log4j2) branch 2.x-site-stg-out updated: Add website content generated from `248be8d14909d6c91395ad453c658be72580bffa`
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 d04e8e969a Add website content generated from `248be8d14909d6c91395ad453c658be72580bffa`
d04e8e969a is described below
commit d04e8e969ab8a34de831cb0e126a5eb1ab9267db
Author: ASF Logging Services RM <pr...@logging.apache.org>
AuthorDate: Fri May 24 07:38:25 2024 +0000
Add website content generated from `248be8d14909d6c91395ad453c658be72580bffa`
---
5min.html | 4 +-
articles.html | 4 +-
development.html | 4 +-
download.html | 4 +-
faq.html | 4 +-
index.html | 4 +-
javadoc.html | 4 +-
log4j-1.2-api.html | 4 +-
log4j-api.html | 4 +-
log4j-appserver.html | 4 +-
log4j-cassandra.html | 4 +-
log4j-couchdb.html | 4 +-
log4j-docker.html | 4 +-
log4j-flume-ng.html | 4 +-
log4j-iostreams.html | 4 +-
log4j-jakarta-web.html | 4 +-
log4j-jcl.html | 4 +-
log4j-jmx-gui.html | 4 +-
log4j-jpl.html | 4 +-
log4j-jul.html | 4 +-
log4j-mongodb3.html | 4 +-
log4j-mongodb4.html | 4 +-
log4j-slf4j-impl.html | 4 +-
log4j-slf4j2-impl.html | 4 +-
log4j-spring-boot.html | 4 +-
log4j-spring-cloud-config-client.html | 4 +-
log4j-spring-cloud-config.html | 4 +-
log4j-taglib.html | 4 +-
log4j-to-jul.html | 4 +-
log4j-to-slf4j.html | 4 +-
log4j-web.html | 4 +-
manual/api-separation.html | 4 +-
manual/api.html | 6 +-
manual/appenders.html | 4 +-
manual/architecture.html | 4 +-
manual/async.html | 4 +-
manual/cloud.html | 4 +-
manual/compatibility.html | 4 +-
manual/configuration.html | 4 +-
manual/customconfig.html | 4 +-
manual/customloglevels.html | 10 +-
manual/eventlogging.html | 4 +-
manual/extending.html | 4 +-
manual/filters.html | 4 +-
manual/flowtracing.html | 4 +-
manual/garbagefree.html | 4 +-
manual/index.html | 4 +-
manual/installation.html | 4 +-
manual/jmx.html | 4 +-
manual/json-template-layout.html | 4 +-
manual/layouts.html | 4 +-
manual/logbuilder.html | 4 +-
manual/logsep.html | 4 +-
manual/lookups.html | 4 +-
manual/markers.html | 4 +-
manual/messages.html | 656 +++++++++++++++++++++-------------
manual/migration.html | 4 +-
manual/performance.html | 4 +-
manual/plugins.html | 4 +-
manual/resource-logger.html | 4 +-
manual/scoped-context.html | 4 +-
manual/scripts.html | 4 +-
manual/systemproperties.html | 4 +-
manual/thread-context.html | 8 +-
manual/usage.html | 4 +-
manual/webapp.html | 4 +-
plugin-reference.html | 4 +-
release-notes.html | 4 +-
runtime-dependencies.html | 4 +-
sitemap.xml | 140 ++++----
thanks.html | 4 +-
71 files changed, 614 insertions(+), 470 deletions(-)
diff --git a/5min.html b/5min.html
index 62b57b0824..9c11979893 100644
--- a/5min.html
+++ b/5min.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/articles.html b/articles.html
index 7c91120b8f..c372c21f4c 100644
--- a/articles.html
+++ b/articles.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/development.html b/development.html
index 8afa8daeb3..85bfd74d3b 100644
--- a/development.html
+++ b/development.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/download.html b/download.html
index 8ed2cc62e2..e3f7050b3d 100644
--- a/download.html
+++ b/download.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/faq.html b/faq.html
index 7f0fc48164..ea815a5218 100644
--- a/faq.html
+++ b/faq.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/index.html b/index.html
index a9722ce9e2..e3bd16cc9b 100644
--- a/index.html
+++ b/index.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/javadoc.html b/javadoc.html
index 4f643c6958..c7125cff10 100644
--- a/javadoc.html
+++ b/javadoc.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-1.2-api.html b/log4j-1.2-api.html
index 0a1aa1349e..2327dc162c 100644
--- a/log4j-1.2-api.html
+++ b/log4j-1.2-api.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-api.html b/log4j-api.html
index d7a86ee988..fe4265ba59 100644
--- a/log4j-api.html
+++ b/log4j-api.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-appserver.html b/log4j-appserver.html
index a22329e1fd..ff7d5bb03a 100644
--- a/log4j-appserver.html
+++ b/log4j-appserver.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-cassandra.html b/log4j-cassandra.html
index 3d9fa2c0ba..bd393abd07 100644
--- a/log4j-cassandra.html
+++ b/log4j-cassandra.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-couchdb.html b/log4j-couchdb.html
index 4785158feb..22808eb77f 100644
--- a/log4j-couchdb.html
+++ b/log4j-couchdb.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-docker.html b/log4j-docker.html
index 1e1f8e465e..0d315c98a3 100644
--- a/log4j-docker.html
+++ b/log4j-docker.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-flume-ng.html b/log4j-flume-ng.html
index bc1ef79198..b57ab27225 100644
--- a/log4j-flume-ng.html
+++ b/log4j-flume-ng.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-iostreams.html b/log4j-iostreams.html
index 6435cfb5e0..e360fb7dab 100644
--- a/log4j-iostreams.html
+++ b/log4j-iostreams.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-jakarta-web.html b/log4j-jakarta-web.html
index acdf731eeb..95ca0818ee 100644
--- a/log4j-jakarta-web.html
+++ b/log4j-jakarta-web.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-jcl.html b/log4j-jcl.html
index 193b7a10a6..3ddf81605c 100644
--- a/log4j-jcl.html
+++ b/log4j-jcl.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-jmx-gui.html b/log4j-jmx-gui.html
index dde253473f..2feb3e87d6 100644
--- a/log4j-jmx-gui.html
+++ b/log4j-jmx-gui.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-jpl.html b/log4j-jpl.html
index bfccb60c95..3213561e7c 100644
--- a/log4j-jpl.html
+++ b/log4j-jpl.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-jul.html b/log4j-jul.html
index c45a398e1b..338c730eb8 100644
--- a/log4j-jul.html
+++ b/log4j-jul.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-mongodb3.html b/log4j-mongodb3.html
index f9bd17dd24..6206987a71 100644
--- a/log4j-mongodb3.html
+++ b/log4j-mongodb3.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-mongodb4.html b/log4j-mongodb4.html
index efea71bb0c..6899cdb2c5 100644
--- a/log4j-mongodb4.html
+++ b/log4j-mongodb4.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-slf4j-impl.html b/log4j-slf4j-impl.html
index 2003f2ce6e..b270af257d 100644
--- a/log4j-slf4j-impl.html
+++ b/log4j-slf4j-impl.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-slf4j2-impl.html b/log4j-slf4j2-impl.html
index 103aba709c..16d2f5d6bb 100644
--- a/log4j-slf4j2-impl.html
+++ b/log4j-slf4j2-impl.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-spring-boot.html b/log4j-spring-boot.html
index 803ca1cee0..ff17855290 100644
--- a/log4j-spring-boot.html
+++ b/log4j-spring-boot.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-spring-cloud-config-client.html b/log4j-spring-cloud-config-client.html
index b87c5e46c6..c42162d63d 100644
--- a/log4j-spring-cloud-config-client.html
+++ b/log4j-spring-cloud-config-client.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-spring-cloud-config.html b/log4j-spring-cloud-config.html
index dfa9b539ad..304126e3d3 100644
--- a/log4j-spring-cloud-config.html
+++ b/log4j-spring-cloud-config.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-taglib.html b/log4j-taglib.html
index 4503c3fc15..b54d9a1f5a 100644
--- a/log4j-taglib.html
+++ b/log4j-taglib.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-to-jul.html b/log4j-to-jul.html
index 459e5128b1..b6acb5f878 100644
--- a/log4j-to-jul.html
+++ b/log4j-to-jul.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-to-slf4j.html b/log4j-to-slf4j.html
index 8e5e7cdc9d..8d2f5747b8 100644
--- a/log4j-to-slf4j.html
+++ b/log4j-to-slf4j.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/log4j-web.html b/log4j-web.html
index 48834a8db1..94a5239233 100644
--- a/log4j-web.html
+++ b/log4j-web.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/manual/api-separation.html b/manual/api-separation.html
index 019924fb70..69cf0daf9a 100644
--- a/manual/api-separation.html
+++ b/manual/api-separation.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/api.html b/manual/api.html
index 03e514023c..4173b5edbe 100644
--- a/manual/api.html
+++ b/manual/api.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
@@ -504,7 +504,7 @@ logger.trace("Some long-running operation returned {}", () -> expensiveOperat
</div>
</div>
<div class="sect2">
-<h3 id="_logger_names"><a class="anchor" href="#_logger_names"></a>Logger Names</h3>
+<h3 id="logger-names"><a class="anchor" href="#logger-names"></a>Logger Names</h3>
<div class="paragraph">
<p>Most logging implementations use a hierarchical scheme for matching
logger names with logging configuration. In this scheme, the logger name
diff --git a/manual/appenders.html b/manual/appenders.html
index ba20e0b91b..4922316b26 100644
--- a/manual/appenders.html
+++ b/manual/appenders.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/architecture.html b/manual/architecture.html
index 189eb36955..6613fcb4bc 100644
--- a/manual/architecture.html
+++ b/manual/architecture.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/async.html b/manual/async.html
index 56e4ff31b1..3fac9a3ebf 100644
--- a/manual/async.html
+++ b/manual/async.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/cloud.html b/manual/cloud.html
index 4c3eea188f..9589ab1074 100644
--- a/manual/cloud.html
+++ b/manual/cloud.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/compatibility.html b/manual/compatibility.html
index 22e7416d14..4e343feb77 100644
--- a/manual/compatibility.html
+++ b/manual/compatibility.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/configuration.html b/manual/configuration.html
index 3d18cff49e..b8da4d54d8 100644
--- a/manual/configuration.html
+++ b/manual/configuration.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/customconfig.html b/manual/customconfig.html
index 6e17aafc31..56f72d0e61 100644
--- a/manual/customconfig.html
+++ b/manual/customconfig.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/customloglevels.html b/manual/customloglevels.html
index b43a39ca5f..69a24c7a3e 100644
--- a/manual/customloglevels.html
+++ b/manual/customloglevels.html
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
- <title>Custom Log Levels :: Apache Log4j</title>
+ <title>Log Levels :: Apache Log4j</title>
<link rel="canonical" href="https://logging.apache.org/log4j/2.x/manual/customloglevels.html">
<meta name="generator" content="Antora 3.2.0-alpha.4">
<link rel="stylesheet" href="../_/css/site.css">
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item is-current-page" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item is-current-page" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
@@ -334,7 +334,7 @@
<li><a href="../index.html">Home</a></li>
<li><a href="index.html">Manual</a></li>
<li>Configuration</li>
- <li><a href="customloglevels.html">Custom Log Levels</a></li>
+ <li><a href="customloglevels.html">Log Levels</a></li>
</ul>
</nav>
<div class="edit-this-page"><a href="https://github.com/apache/logging-log4j2/edit/2.x/src/site/antora/modules/ROOT/pages/manual/customloglevels.adoc">Edit this Page</a></div>
@@ -344,7 +344,7 @@
<div class="toc-menu"></div>
</aside>
<article class="doc">
-<h1 class="page">Custom Log Levels</h1>
+<h1 class="page">Log Levels</h1>
<div class="sect1">
<h2 id="DefiningLevelsInCode"><a class="anchor" href="#DefiningLevelsInCode"></a>Defining Custom Log Levels in Code</h2>
<div class="sectionbody">
diff --git a/manual/eventlogging.html b/manual/eventlogging.html
index b89b44d738..e3cdcbb494 100644
--- a/manual/eventlogging.html
+++ b/manual/eventlogging.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/extending.html b/manual/extending.html
index ca05d59b68..a34c45b1a6 100644
--- a/manual/extending.html
+++ b/manual/extending.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/filters.html b/manual/filters.html
index 9a1fb1613d..b58350d6ea 100644
--- a/manual/filters.html
+++ b/manual/filters.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item is-current-page" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/flowtracing.html b/manual/flowtracing.html
index e805b5ea98..4062cb9dd8 100644
--- a/manual/flowtracing.html
+++ b/manual/flowtracing.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/garbagefree.html b/manual/garbagefree.html
index 851cd41ae0..92594945de 100644
--- a/manual/garbagefree.html
+++ b/manual/garbagefree.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/index.html b/manual/index.html
index b2a7e8234c..4ebb6ee9da 100644
--- a/manual/index.html
+++ b/manual/index.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/installation.html b/manual/installation.html
index 488e663f6b..fb4cc8b20e 100644
--- a/manual/installation.html
+++ b/manual/installation.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/jmx.html b/manual/jmx.html
index 32fd0f71c2..209cd2f899 100644
--- a/manual/jmx.html
+++ b/manual/jmx.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item is-current-page" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/json-template-layout.html b/manual/json-template-layout.html
index 97938470c0..7448f8971a 100644
--- a/manual/json-template-layout.html
+++ b/manual/json-template-layout.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/layouts.html b/manual/layouts.html
index 513a38bcd2..597b4db8b4 100644
--- a/manual/layouts.html
+++ b/manual/layouts.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/logbuilder.html b/manual/logbuilder.html
index 5277e4df93..a0d7077562 100644
--- a/manual/logbuilder.html
+++ b/manual/logbuilder.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/logsep.html b/manual/logsep.html
index 717645e12b..681f976290 100644
--- a/manual/logsep.html
+++ b/manual/logsep.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/lookups.html b/manual/lookups.html
index 9c91b37395..be7090e718 100644
--- a/manual/lookups.html
+++ b/manual/lookups.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/markers.html b/manual/markers.html
index 4e71910b3e..2febee7ad7 100644
--- a/manual/markers.html
+++ b/manual/markers.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/messages.html b/manual/messages.html
index 47a44a46e2..3b094c97a9 100644
--- a/manual/messages.html
+++ b/manual/messages.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
@@ -348,380 +348,524 @@
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
-<p>Although Log4j 2 provides Logger methods that accept Strings and
-Objects, all of these are ultimately captured in Message objects that
-are then associated with the log event. Applications are free to
-construct Messages of their own and pass them to the Logger. Although it
-may seem more expensive than passing the message format and parameters
-directly to the event, testing has shown that with modern JVMs the cost
-of creating and destroying events is minor, especially when complex
-tasks are encapsulated in the Message instead of the application. In
-addition, when using the methods that accept Strings and parameters, the
-underlying Message object will only be created if any configured global
-filters or the Logger’s log level allow the message to be processed.</p>
-</div>
-<div class="paragraph">
-<p>Consider an application that has a Map object containing \{"Name" =
-"John Doe", "Address" = "123 Main St.", "Phone" = "(999) 555-1212"} and
-a User object that has a getId method that returns "jdoe". The developer
-would like to add an informational message that returns "User John Doe
-has logged in using id jdoe". The way this could be accomplished is by
-doing:</p>
+<p>Unlike other logging APIs, which either restrict the description of log events to (possibly interpolated) Java
+<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html"><code>String</code></a>s
+or allow generic Java
+<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html"><code>Object</code></a>s,
+the Log4j API encapsulates every log message into the logging-specific
+<a href="../javadoc/log4j-api/org/apache/logging/log4j/message/Message.html"><code>Message</code></a>
+interface, before passing it to the logging backend. Such an approach opens to developers a wide range of customization possibilities.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="anatomy-log-event"><a class="anchor" href="#anatomy-log-event"></a>Anatomy of a logging event</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Logging events are complex objects that contain many fields that can be classified into three categories:</p>
+</div>
+<div class="olist arabic">
+<ol class="arabic">
+<li>
+<p>Some fields are provided explicitly, in a
+<a href="../javadoc/log4j-api/org/apache/logging/log4j/Logger.html"><code>Logger</code></a>
+method call.
+The most important are the log level and the <strong>log message</strong>, which is a description of what happened addressed to humans.
+Log4j API provides a rich set of methods to specify log messages, which will be described in this chapter.</p>
+</li>
+<li>
+<p>Some fields are contextual and is either provided explicitly by developers of other parts of the application (see
+<a href="thread-context.html" class="xref page">Thread context</a>)
+or is injected by Java instrumentation.</p>
+</li>
+<li>
+<p>The last category of fields is those that are computed automatically by the logging backend you use.</p>
+</li>
+</ol>
+</div>
+<div class="paragraph">
+<p>For clarity’s sake let us look at a possible log event formatted as JSON:</p>
</div>
<div class="listingblock">
<div class="content">
-<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">logger.info("User {} has logged in using id {}", map.get("Name"), user.getId());</code></pre>
+<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{
+ <i class="conum" data-value="1"></i><b>(1)</b>
+ "log.level": "INFO",
+ "message": "Unable to insert data into my_table.",
+ "error.type": "java.lang.RuntimeException",
+ "error.message": null,
+ "error.stack_trace": [
+ {
+ "class": "com.example.Main",
+ "method": "doQuery",
+ "file.name": "Main.java",
+ "file.line": 36
+ },
+ {
+ "class": "com.example.Main",
+ "method": "main",
+ "file.name": "Main.java",
+ "file.line": 25
+ }
+ ],
+ "marker": "SQL",
+ "log.logger": "com.example.Main",
+ <i class="conum" data-value="2"></i><b>(2)</b>
+ "tags": [
+ "SQL query"
+ ],
+ "labels": {
+ "span_id": "3df85580-f001-4fb2-9e6e-3066ed6ddbb1",
+ "trace_id": "1b1f8fc9-1a0c-47b0-a06f-af3c1dd1edf9"
+ },
+ <i class="conum" data-value="3"></i><b>(3)</b>
+ "@timestamp": "2024-05-23T09:32:24.163Z",
+ "log.origin.class": "com.example.Main",
+ "log.origin.method": "doQuery",
+ "log.origin.file.name": "Main.java",
+ "log.origin.file.line": 36,
+ "process.thread.id": 1,
+ "process.thread.name": "main",
+ "process.thread.priority": 5
+}</code></pre>
+</div>
+</div>
+<div class="colist arabic">
+<table>
+<tr>
+<td><i class="conum" data-value="1"></i><b>1</b></td>
+<td>Explicitly supplied fields:
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>log.level</code></dt>
+<dd>
+<p>The <a href="customloglevels.html" class="xref page">log level</a> of the event, either explicitly provided as an argument to the logging call or implied by the name of the logging method,</p>
+</dd>
+<dt class="hdlist1"><code>message</code></dt>
+<dd>
+<p>The <strong>log message</strong> that describes what happened.</p>
+</dd>
+<dt class="hdlist1"><code>error.*</code></dt>
+<dd>
+<p>An <em>optional</em>
+<a href="https://docs.oracle.com/javase/{/docs/api/java/lang/Throwable.html"><code>Throwable</code></a> explicitly passed as an argument to the logging call.</p>
+</dd>
+<dt class="hdlist1"><code>marker</code></dt>
+<dd>
+<p>An <em>optional</em> <a href="markers.html" class="xref page">marker</a> explicitly passed as an argument to the logging call.</p>
+</dd>
+<dt class="hdlist1"><code>log.logger</code></dt>
+<dd>
+<p>The <a href="api.html#logger-names" class="xref page">logger name</a> provided explicitly to <code>LogManager.getLogger()</code> or inferred by Log4j API.</p>
+</dd>
+</dl>
+</div></td>
+</tr>
+<tr>
+<td><i class="conum" data-value="2"></i><b>2</b></td>
+<td>Contextual fields:
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>tags</code></dt>
+<dd>
+<p>The stack of <a href="thread-context.html#nested-diagnostic-context" class="xref page">nested diagnostic context</a> messages.</p>
+</dd>
+<dt class="hdlist1"><code>labels</code></dt>
+<dd>
+<p>The key/value pairs of the current <a href="thread-context.html#mapped-diagnostic-context" class="xref page">mapped diagnostic context</a>.</p>
+</dd>
+</dl>
+</div></td>
+</tr>
+<tr>
+<td><i class="conum" data-value="3"></i><b>3</b></td>
+<td>Logging backend specific fields.
+In case you are using Log4j Core, the following fields can be automatically generated:
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>@timestamp</code></dt>
+<dd>
+<p>The timestamp, when the log event occurs.</p>
+</dd>
+<dt class="hdlist1"><code>log.origin.*</code></dt>
+<dd>
+<p>The <a href="layouts.html#LocationInformation" class="xref page">location</a> of the logging call in the source code.</p>
+</dd>
+<dt class="hdlist1"><code>process.thread.*</code></dt>
+<dd>
+<p>The Java thread that generates the logging event.</p>
+</dd>
+</dl>
+</div></td>
+</tr>
+</table>
+</div>
</div>
</div>
+<div class="sect1">
+<h2 id="_creating_log_messages"><a class="anchor" href="#_creating_log_messages"></a>Creating log messages</h2>
+<div class="sectionbody">
<div class="paragraph">
-<p>While there is nothing inherently wrong with this, as the complexity of
-the objects and desired output increases this technique becomes harder
-to use. As an alternative, using Messages allows:</p>
+<p>While internally Log4j uses <code>Message</code> objects, the <code>Logger</code> interface provides various shortcut methods to create the most commonly used messages:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>To create a <a href="#SimpleMessage"><code>SimpleMessage</code></a> from a <code>String</code> argument, the following logger calls are equivalent:</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">logger.error("Houston, we have a problem.", e);
+logger.error(new SimpleMessage("Houston, we have a problem."), e);</code></pre>
</div>
+</div>
+</li>
+<li>
+<p>To create a <a href="#ParameterizedMessage"><code>ParameterizedMessage</code></a> from a format <code>String</code> and an array of object parameters, the following logger calls are equivalent:</p>
<div class="listingblock">
<div class="content">
-<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">logger.info(new LoggedInMessage(map, user));</code></pre>
+<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">logger.error("Unable to {}, because {} occurred", action, cause, e);
+logger.error(new ParameterizedMessage("Unable to {}, because {} occurred", action, cause), e);</code></pre>
</div>
</div>
+</li>
+</ul>
+</div>
<div class="paragraph">
-<p>In this alternative the formatting is delegated to the <code>LoggedInMessage</code>
-object’s <code>getFormattedMessage</code> method. Although in this alternative a new
-object is created, none of the methods on the objects passed to the
-<code>LoggedInMessage</code> are invoked until the <code>LoggedInMessage</code> is formatted. This
-is especially useful when an <code>Object’s `toString</code> method does not produce
-the information you would like to appear in the log.</p>
+<p>In small and austere environments, this is sufficient. However, in more complex scenarios,
+the string one wants to log may require more complex construction.</p>
</div>
<div class="paragraph">
-<p>Another advantage to Messages is that they simplify writing Layouts. In
-other logging frameworks the Layout must loop through the parameters
-individually and determine what to do based on what objects are
-encountered. With Messages the Layout has the option of delegating the
-formatting to the Message or performing its formatting based on the type
-of Message encountered.</p>
+<p>Imagine a scenario that uses a domain event to signal authentication failures:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">record LoginFailureEvent(String userName, InetSocketAddress remoteAddress) {}</code></pre>
+</div>
</div>
<div class="paragraph">
-<p>Borrowing from the earlier example illustrating Markers to identify SQL
-statements being logged, Messages can also be leveraged. First, the
-Message is defined.</p>
+<p>When the developer wants to log a message reporting the event,
+we can see that the string construction becomes more challenging to read:</p>
</div>
<div class="listingblock">
<div class="content">
-<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public class SQLMessage implements Message {
- public enum SQLType {
- UPDATE,
- QUERY
- }
-
- private final SQLType type;
- private final String table;
- private final Map<String, String> cols;
-
- public SQLMessage(SQLType type, String table) {
- this(type, table, null);
- }
-
- public SQLMessage(SQLType type, String table, Map<String, String> cols) {
- this.type = type;
- this.table = table;
- this.cols = cols;
- }
-
- public String getFormattedMessage() {
- switch (type) {
- case UPDATE:
- return createUpdateString();
- break;
- case QUERY:
- return createQueryString();
- break;
- default:
- throw new UnsupportedOperationException();
- }
- }
-
- public String getMessageFormat() {
- return type + " " + table;
- }
-
- public Object getParameters() {
- return cols;
- }
-
- private String createUpdateString() {
- }
-
- private String createQueryString() {
- }
-
- private String formatCols(Map<String, String> cols) {
- StringBuilder sb = new StringBuilder();
- boolean first = true;
- for (Map.Entry<String, String> entry : cols.entrySet()) {
- if (!first) {
- sb.append(", ");
- }
- sb.append(entry.getKey()).append("=").append(entry.getValue());
- first = false;
- }
- return sb.toString();
- }
-}</code></pre>
+<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">logger.info(
+ "Connection closed by authenticating user {} {} port {} [preauth]",
+ event.userName(),
+ event.remoteAddress().getHostName(),
+ event.remoteAddress().getPort());</code></pre>
</div>
</div>
<div class="paragraph">
-<p>Next we can use the message in our application.</p>
+<p>By extending the <code>Message</code> interface, developers can simplify the reporting of a login failure:</p>
</div>
<div class="listingblock">
<div class="content">
-<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.LogManager;
-import java.util.Map;
-
-public class MyApp {
-
- private Logger logger = LogManager.getLogger(MyApp.class.getName());
- private static final Marker SQL_MARKER = MarkerManager.getMarker("SQL");
- private static final Marker UPDATE_MARKER = MarkerManager.getMarker("SQL_UPDATE", SQL_MARKER);
- private static final Marker QUERY_MARKER = MarkerManager.getMarker("SQL_QUERY", SQL_MARKER);
-
- public String doQuery(String table) {
- logger.entry(param);
-
- logger.debug(QUERY_MARKER, new SQLMessage(SQLMessage.SQLType.QUERY, table));
-
- return logger.exit();
- }
-
- public String doUpdate(String table, Map<String, String> params) {
- logger.entry(param);
-
- logger.debug(UPDATE_MARKER, new SQLMessage(SQLMessage.SQLType.UPDATE, table, parmas));
-
- return logger.exit();
+<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">record LoginFailureEvent(String userName, InetSocketAddress remoteAddress) implements Message { <i class="conum" data-value="1"></i><b>(1)</b>
+ @Override
+ public String getFormattedMessage() { <i class="conum" data-value="2"></i><b>(2)</b>
+ return "Connection closed by authenticating user " + userName() + " "
+ + remoteAddress().getHostName() + " port " + remoteAddress().getPort() + " [preauth]";
}
+ // Other methods
}</code></pre>
</div>
</div>
+<div class="colist arabic">
+<table>
+<tr>
+<td><i class="conum" data-value="1"></i><b>1</b></td>
+<td>Developers need to implement the <code>Message</code> interface.</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="2"></i><b>2</b></td>
+<td>The <code>getFormattedMessage()</code> provides the <code>String</code> to be logged.</td>
+</tr>
+</table>
+</div>
<div class="paragraph">
-<p>Notice that in contrast to the prior version of this example, the
-<code>logger.debug</code> in <code>doUpdate</code> no longer needs to be wrapped in an
-<code>isDebugEnabled</code> call as creation of the <code>SQLMessage</code> is on the same order
-of magnitude of performing that check. Furthermore, all the formatting
-of the SQL columns is now hidden in the <code>SQLMessage</code> instead of having to
-take place in the business logic. Finally, if desired, Filters and/or
-Layouts can be written to take special action when an <code>SQLMessage</code> is
-encountered.</p>
+<p>The code is then reusable, by simply calling:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">logger.info(event);</code></pre>
+</div>
</div>
</div>
</div>
<div class="sect1">
-<h2 id="FormattedMessage"><a class="anchor" href="#FormattedMessage"></a>FormattedMessage</h2>
+<h2 id="_message_types"><a class="anchor" href="#_message_types"></a>Message types</h2>
<div class="sectionbody">
<div class="paragraph">
+<p>Log4j provides several message types that developers can use to create log messages.</p>
+</div>
+<div class="sect2">
+<h3 id="FormattedMessage"><a class="anchor" href="#FormattedMessage"></a>FormattedMessage</h3>
+<div class="paragraph">
<p>The message pattern passed to a
<a href="../javadoc/log4j-api/org/apache/logging/log4j/message/FormattedMessage.html"><code>FormattedMessage</code></a>
-is first checked to see if it is a valid <code>java.text.MessageFormat</code>
-pattern. If it is, a <code>MessageFormatMessage</code> is used to format it. If not
-it is next checked to see if it contains any tokens that are valid
-format specifiers for <code>String.format()</code>. If so, a <code>StringFormattedMessage</code>
-is used to format it. Finally, if the pattern doesn’t match either of
-those then a <code>ParameterizedMessage</code> is used to format it.</p>
+undergoes a series of checks to determine the appropriate formatting method.</p>
</div>
+<div class="ulist">
+<ul>
+<li>
+<p>First, the pattern is checked for a valid <code>java.text.MessageFormat</code> pattern.</p>
+</li>
+<li>
+<p>If it is, a <code>MessageFormatMessage</code> is used for formatting.</p>
+</li>
+<li>
+<p>If it is not, the pattern is then checked for any tokens that are valid format specifiers for <code>String.format()</code>.
+A <code>StringFormattedMessage</code> is used to format the message when Log4j finds such tokens.</p>
+</li>
+<li>
+<p>Finally, if the pattern does not match either of these formats, a <code>ParameterizedMessage</code> is used for formatting.</p>
+</li>
+</ul>
</div>
</div>
-<div class="sect1">
-<h2 id="LocalizedMessage"><a class="anchor" href="#LocalizedMessage"></a>LocalizedMessage</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="LocalizedMessage"><a class="anchor" href="#LocalizedMessage"></a>LocalizedMessage</h3>
<div class="paragraph">
<p><a href="../javadoc/log4j-api/org/apache/logging/log4j/message/LocalizedMessage.html"><code>LocalizedMessage</code></a>
-is provided primarily to provide compatibility with Log4j 1.x.
-Generally, the best approach to localization is to have the client UI
-render the events in the client’s locale.</p>
+is provided primarily to provide compatibility with Log4j 1.x.</p>
+</div>
+<div class="paragraph">
+<p>Generally, the best approach to localization is to have the client’s UI render the events in the client’s locale.</p>
+</div>
+<div class="paragraph">
+<p><code>LocalizedMessage</code> incorporates a <code>ResourceBundle</code> and allows the message pattern parameter
+to be the key to the message pattern in the bundle.</p>
</div>
<div class="paragraph">
-<p><code>LocalizedMessage</code> incorporates a <code>ResourceBundle</code> and allows the message
-pattern parameter to be the key to the message pattern in the bundle. If
-no bundle is specified, <code>LocalizedMessage</code> will attempt to locate a bundle
+<p>If no bundle is specified, <code>LocalizedMessage</code> will attempt to locate a bundle
with the name of the Logger used to log the event. The message retrieved
from the bundle will be formatted using a FormattedMessage.</p>
</div>
</div>
-</div>
-<div class="sect1">
-<h2 id="LoggerNameAwareMessage"><a class="anchor" href="#LoggerNameAwareMessage"></a>LoggerNameAwareMessage</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="LoggerNameAwareMessage"><a class="anchor" href="#LoggerNameAwareMessage"></a>LoggerNameAwareMessage</h3>
<div class="paragraph">
-<p><code>LoggerNameAwareMessage</code> is an interface with a <code>setLoggerName</code> method. This
-method will be called during event construction so that the Message has
-the name of the Logger used to log the event when the message is being
-formatted.</p>
+<p><code>LoggerNameAwareMessage</code> is an interface with a <code>setLoggerName()</code> method.</p>
</div>
+<div class="paragraph">
+<p>This method will be called during event construction so that the Message
+has the name of the Logger used to log the event when Log4j formats the message.</p>
</div>
</div>
-<div class="sect1">
-<h2 id="MapMessage"><a class="anchor" href="#MapMessage"></a>MapMessage</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="MapMessage"><a class="anchor" href="#MapMessage"></a>MapMessage</h3>
<div class="paragraph">
-<p>A <code>MapMessage</code> contains a Map of String keys and values. <code>MapMessage</code>
-implements <code>FormattedMessage</code> and accepts format specifiers of "XML",
-"JSON" or "JAVA", in which case the Map will be formatted as XML, JSON
-or as documented by
-<a href="https://docs.oracle.com/javase/7/docs/api/java/util/AbstractMap.html#toString()"><code>java.util.AbstractMap.toString()</code></a>.
-Otherwise, the Map will be formatted as <code>"key1=value1 key2=value2 …​"</code>.</p>
+<p>A <code>MapMessage</code> contains a Map of String keys and values.</p>
</div>
<div class="paragraph">
-<p>Some Appenders make special use of <code>MapMessage</code> objects:</p>
+<p><code>MapMessage</code> implements <code>FormattedMessage</code> and accepts the following format specifiers:</p>
</div>
<div class="ulist">
<ul>
<li>
-<p>When a JMS Appender is configured
-with a no layout, it converts a Log4j <code>MapMessage</code> to a JMS
-<code>javax.jms.MapMessage</code>.</p>
+<p>"XML" - format the Map as XML</p>
</li>
<li>
-<p>When a <a href="appenders.html#JDBCAppender" class="xref page">JDBC Appender</a> is configured
-with no layout, it converts a Log4j <code>MapMessage</code> to values in a
-SQL INSERT statement.</p>
+<p>"JSON" - format the Map as JSON</p>
</li>
<li>
-<p>When a <a href="appenders.html#NoSQLAppenderMongoDBMain" class="xref page">MongoDB Appender</a> is
-configured with no layout, it converts a Log4j <code>MapMessage</code> to
-fields in a MongoDB object.</p>
+<p>"JAVA" - format the Map as a Java object</p>
</li>
</ul>
</div>
+<div class="paragraph">
+<p>Otherwise, it will format the Map as documented in
+<a href="https://docs.oracle.com/javase/7/docs/api/java/util/AbstractMap.html#toString()"><code>java.util.AbstractMap.toString()</code></a>.</p>
</div>
+<div class="paragraph">
+<p>Some appenders convert the <code>MapMessage</code> objects differently when there is no layout:</p>
</div>
-<div class="sect1">
-<h2 id="MessageFormatMessage"><a class="anchor" href="#MessageFormatMessage"></a>MessageFormatMessage</h2>
-<div class="sectionbody">
+<div class="ulist">
+<ul>
+<li>
+<p>JMS Appender converts to a JMS <code>javax.jms.MapMessage</code>.</p>
+</li>
+<li>
+<p><a href="appenders.html#JDBCAppender" class="xref page">JDBC Appender</a> converts to values in a SQL INSERT statement</p>
+</li>
+<li>
+<p><a href="appenders.html#NoSQLAppenderMongoDBMain" class="xref page">MongoDB Appender</a> converts to fields in MongoDB object</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="MessageFormatMessage"><a class="anchor" href="#MessageFormatMessage"></a>MessageFormatMessage</h3>
<div class="paragraph">
<p><a href="../javadoc/log4j-api/org/apache/logging/log4j/message/MessageFormatMessage.html"><code>MessageFormatMessage</code></a>
handles messages that use a
-<a href="https://docs.oracle.com/javase/7/docs/api/java/text/MessageFormat.html">conversion
-format</a>. While this <code>Message</code> has more flexibility than
-<code>ParameterizedMessage</code>, it is also about two times slower.</p>
+<a href="https://docs.oracle.com/javase/7/docs/api/java/text/MessageFormat.html">conversion format</a>.</p>
</div>
+<div class="paragraph">
+<p>While this <code>Message</code> has more flexibility than <code>ParameterizedMessage,</code> it is also about two times slower.</p>
</div>
</div>
-<div class="sect1">
-<h2 id="MultiformatMessage"><a class="anchor" href="#MultiformatMessage"></a>MultiformatMessage</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="MultiformatMessage"><a class="anchor" href="#MultiformatMessage"></a>MultiformatMessage</h3>
+<div class="paragraph">
+<p>A <code>MultiformatMessage</code> has the <code>getFormats()</code> and <code>getFormattedMessage()</code> method that accepts an array of format Strings.</p>
+</div>
<div class="paragraph">
-<p>A <code>MultiformatMessage</code> will have a getFormats method and a
-<code>getFormattedMessage</code> method that accepts and array of format Strings. The
-<code>getFormats</code> method may be called by a Layout to provide it information on
-what formatting options the Message supports. The Layout may then call
-<code>getFormattedMessage</code> with one or more for the formats. If the Message
-doesn’t recognize the format name it will simply format the data using
-its default format. An example of this is <code>StructuredDataMessage</code>
-which accepts a format String of "XML" which will cause it to format the
-event data as XML instead of the RFC 5424 format.</p>
+<p>Layouts may use the <code>getFormats()</code> method to provide information on the formatting options the message supports.
+The Layout may then call <code>getFormattedMessage()</code> with one or more formats.
+The message will be shown in the default format when the format name is not recognized.</p>
</div>
+<div class="paragraph">
+<p>For example, the <code>StructuredDataMessage</code> accepts the "XML" format name to
+format the message as XML instead of the default RFC5424 format.</p>
</div>
</div>
-<div class="sect1">
-<h2 id="ObjectMessage"><a class="anchor" href="#ObjectMessage"></a>ObjectMessage</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="ObjectMessage"><a class="anchor" href="#ObjectMessage"></a>ObjectMessage</h3>
<div class="paragraph">
-<p>Formats an <code>Object</code> by calling its <code>toString</code> method. Since Log4j 2.6,
-Layouts trying to be low-garbage or garbage-free will call the
-<code>formatTo(StringBuilder)</code> method instead.</p>
+<p>Formats an <code>Object</code> by calling its <code>toString()</code> method.</p>
</div>
+<div class="paragraph">
+<p>Since Log4j 2.6, low-garbage or garbage-free layouts call the <code>formatTo(StringBuilder)</code> method instead.</p>
</div>
</div>
-<div class="sect1">
-<h2 id="ParameterizedMessage"><a class="anchor" href="#ParameterizedMessage"></a>ParameterizedMessage</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="ParameterizedMessage"><a class="anchor" href="#ParameterizedMessage"></a>ParameterizedMessage</h3>
<div class="paragraph">
<p><a href="../javadoc/log4j-api/org/apache/logging/log4j/message/ParameterizedMessage.html"><code>ParameterizedMessage</code></a>
-handles messages that contain "\{}" in the format to represent
-replaceable tokens and the replacement parameters.</p>
-</div>
+handles messages that contain "\{}" in the format to represent replaceable tokens and the replacement parameters.</p>
</div>
</div>
-<div class="sect1">
-<h2 id="ReusableObjectMessage"><a class="anchor" href="#ReusableObjectMessage"></a>ReusableObjectMessage</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="ReusableObjectMessage"><a class="anchor" href="#ReusableObjectMessage"></a>ReusableObjectMessage</h3>
<div class="paragraph">
-<p>In garbage-free mode, this message is used to pass logged Objects to the
-Layout and Appenders. Functionally equivalent to
-<a href="#ObjectMessage">ObjectMessage</a>.</p>
+<p><code>ReusableObjectMessage</code> provides functionally equivalent to <a href="#ObjectMessage">ObjectMessage</a>.</p>
</div>
+<div class="paragraph">
+<p>Log4j uses this message in garbage-free mode to pass logged Objects to the Layout and Appenders.</p>
</div>
</div>
-<div class="sect1">
-<h2 id="ReusableParameterizedMessage"><a class="anchor" href="#ReusableParameterizedMessage"></a>ReusableParameterizedMessage</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="ReusableParameterizedMessage"><a class="anchor" href="#ReusableParameterizedMessage"></a>ReusableParameterizedMessage</h3>
<div class="paragraph">
-<p>In garbage-free mode, this message is used to handle messages that
-contain "\{}" in the format to represent replaceable tokens and the
-replacement parameters. Functionally equivalent to
-<a href="#ParameterizedMessage">ParameterizedMessage</a>.</p>
+<p><code>ReusableParameterizedMessage</code> provides functionally equivalent to <a href="#ParameterizedMessage">ParameterizedMessage</a>.</p>
</div>
+<div class="paragraph">
+<p>Log4j uses this message in garbage-free mode to handle messages containing <code>{}</code> in the format representing replaceable tokens and the replacement parameters.</p>
</div>
</div>
-<div class="sect1">
-<h2 id="ReusableSimpleMessage"><a class="anchor" href="#ReusableSimpleMessage"></a>ReusableSimpleMessage</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="ReusableSimpleMessage"><a class="anchor" href="#ReusableSimpleMessage"></a>ReusableSimpleMessage</h3>
<div class="paragraph">
-<p>In garbage-free mode, this message is used to pass logged `String`s and
-`CharSequence`s to the Layout and Appenders. Functionally equivalent to
-<a href="#SimpleMessage">SimpleMessage</a>.</p>
+<p><code>ReusableSimpleMessage</code> provides functionally equivalent to <a href="#SimpleMessage">SimpleMessage</a>.</p>
</div>
+<div class="paragraph">
+<p>Log4j uses this message in garbage-free mode to pass logged <code>String</code> and <code>CharSequence</code> objects to the Layout and Appenders.</p>
</div>
</div>
-<div class="sect1">
-<h2 id="SimpleMessage"><a class="anchor" href="#SimpleMessage"></a>SimpleMessage</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="SimpleMessage"><a class="anchor" href="#SimpleMessage"></a>SimpleMessage</h3>
<div class="paragraph">
-<p><code>SimpleMessage</code> contains a <code>String</code> or <code>CharSequence</code> that requires no
-formatting.</p>
-</div>
+<p><code>SimpleMessage</code> contains a <code>String</code> or <code>CharSequence</code> that requires no formatting.</p>
</div>
</div>
-<div class="sect1">
-<h2 id="StringFormattedMessage"><a class="anchor" href="#StringFormattedMessage"></a>StringFormattedMessage</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="StringFormattedMessage"><a class="anchor" href="#StringFormattedMessage"></a>StringFormattedMessage</h3>
<div class="paragraph">
<p><a href="../javadoc/log4j-api/org/apache/logging/log4j/message/StringFormattedMessage.html"><code>StringFormattedMessage</code></a>
handles messages that use a
-<a href="https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax">conversion
-format</a> that is compliant with
-<a href="https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#format(java.lang.String,%20java.lang.Object…​)">java.lang.String.format()</a>.
-While this Message has more flexibility than <code>ParameterizedMessage</code>, it is
-also 5 to 10 times slower.</p>
+<a href="https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax">conversion format</a>
+that is compliant with
+<a href="https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#format(java.lang.String,%20java.lang.Object…​)">java.lang.String.format()</a>.</p>
</div>
+<div class="paragraph">
+<p>This message is more flexible than <code>ParameterizedMessage</code> but 5 to 10 times slower.</p>
</div>
</div>
-<div class="sect1">
-<h2 id="StructuredDataMessage"><a class="anchor" href="#StructuredDataMessage"></a>StructuredDataMessage</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="StructuredDataMessage"><a class="anchor" href="#StructuredDataMessage"></a>StructuredDataMessage</h3>
<div class="paragraph">
<p><a href="../javadoc/log4j-api/org/apache/logging/log4j/message/StructuredDataMessage.html"><code>StructuredDataMessage</code></a>
-allows applications to add items to a <code>Map</code> as well as set the id to allow
-a message to be formatted as a Structured Data element in accordance
-with <a href="http://tools.ietf.org/html/rfc5424">RFC 5424</a>.</p>
+allows applications to add items to a <code>Map</code> and set the ID to allow Log4j to format the message as a "Structured Data Element."</p>
</div>
+<div class="paragraph">
+<p>See: <a href="http://tools.ietf.org/html/rfc5424">RFC 5424</a> for details.</p>
</div>
</div>
-<div class="sect1">
-<h2 id="ThreadDumpMessage"><a class="anchor" href="#ThreadDumpMessage"></a>ThreadDumpMessage</h2>
-<div class="sectionbody">
+<div class="sect2">
+<h3 id="ThreadDumpMessage"><a class="anchor" href="#ThreadDumpMessage"></a>ThreadDumpMessage</h3>
+<div class="paragraph">
+<p>If a <code>ThreadDumpMessage</code> is logged, Log4j generates stack traces for all threads.
+These stack traces will include any held locks.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="TimestampMessage"><a class="anchor" href="#TimestampMessage"></a>TimestampMessage</h3>
<div class="paragraph">
-<p>A ThreadDumpMessage, if logged, will generate stack traces for all
-threads. The stack traces will include any locks that are held.</p>
+<p>A <code>TimestampMessage</code> provides a <code>getTimestamp()</code> method that Log4j calls during event construction.
+The timestamp in the Message will be used instead of the current timestamp.</p>
+</div>
</div>
</div>
</div>
<div class="sect1">
-<h2 id="TimestampMessage"><a class="anchor" href="#TimestampMessage"></a>TimestampMessage</h2>
+<h2 id="_performance_and_benefits"><a class="anchor" href="#_performance_and_benefits"></a>Performance and benefits</h2>
<div class="sectionbody">
<div class="paragraph">
-<p>A TimestampMessage will provide a <code>getTimestamp</code> method that is called
-during event construction. The timestamp in the Message will be used in
-lieu of the current timestamp.</p>
+<p>Although it may initially seem counterintuitive, there is no performance benefit to using strings instead of messages.
+Testing has shown that modern JVMs can create and destroy log events quickly,
+especially when encapsulating complex tasks in the <code>Message</code> object instead of the application.</p>
+</div>
+<div class="paragraph">
+<p>Applications that care about
+<a href="garbagefree.html" class="xref page">garbage-free logging</a>
+should consider implementing both the <code>Message</code> and
+<a href="../javadoc/log4j-api/org/apache/logging/log4j/util/StringBuilderFormattable.html"><code>StringBuilderFormattable</code></a>,
+which allows to format a message without the creation of temporary <code>String</code> objects.</p>
+</div>
+<div class="paragraph">
+<p>Implementing <code>StringBuilderFormattable</code> is straightforward:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">record LoginFailureEvent(String userName, InetSocketAddress remoteAddress)
+ implements Message, StringBuilderFormattable { <i class="conum" data-value="1"></i><b>(1)</b>
+ @Override
+ public void formatTo(StringBuilder buffer) { <i class="conum" data-value="2"></i><b>(2)</b>
+ buffer.append("Connection closed by authenticating user ")
+ .append(userName())
+ .append(" ")
+ .append(remoteAddress().getHostName())
+ .append(" port ")
+ .append(remoteAddress().getPort())
+ .append(" [preauth]");
+ }
+
+ @Override
+ public String getFormattedMessage() { <i class="conum" data-value="3"></i><b>(3)</b>
+ StringBuilder buffer = new StringBuilder();
+ formatTo(buffer);
+ return buffer.toString();
+ }
+ // Other methods
+}</code></pre>
+</div>
+</div>
+<div class="colist arabic">
+<table>
+<tr>
+<td><i class="conum" data-value="1"></i><b>1</b></td>
+<td>Developers need to implement both the <code>Message</code> and <code>StringBuilderformattable</code> interface.</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="2"></i><b>2</b></td>
+<td>The <code>formatTo()</code> method formats the message directly into a buffer.</td>
+</tr>
+<tr>
+<td><i class="conum" data-value="3"></i><b>3</b></td>
+<td>The <code>getFormattedMessage()</code> method can be easily implemented in terms of <code>formatTo()</code>.</td>
+</tr>
+</table>
</div>
</div>
</div>
diff --git a/manual/migration.html b/manual/migration.html
index 8621e89925..6f722e376a 100644
--- a/manual/migration.html
+++ b/manual/migration.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/performance.html b/manual/performance.html
index 840d45e6bf..f641ed968a 100644
--- a/manual/performance.html
+++ b/manual/performance.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/plugins.html b/manual/plugins.html
index ad06754927..3bcef4fdd0 100644
--- a/manual/plugins.html
+++ b/manual/plugins.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/resource-logger.html b/manual/resource-logger.html
index aaf3743d20..677771c098 100644
--- a/manual/resource-logger.html
+++ b/manual/resource-logger.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/scoped-context.html b/manual/scoped-context.html
index d565bba5fe..ffe46c24f4 100644
--- a/manual/scoped-context.html
+++ b/manual/scoped-context.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/scripts.html b/manual/scripts.html
index 7393b9c122..586af0d74b 100644
--- a/manual/scripts.html
+++ b/manual/scripts.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/systemproperties.html b/manual/systemproperties.html
index b266cc17bc..f2c78b8a21 100644
--- a/manual/systemproperties.html
+++ b/manual/systemproperties.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/thread-context.html b/manual/thread-context.html
index 119049016e..fc55980e8e 100644
--- a/manual/thread-context.html
+++ b/manual/thread-context.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
@@ -408,7 +408,7 @@ request or when there are more than one or two items.</p>
<p>To uniquely stamp each request using the Thread Context Stack, the user
pushes contextual information on to the Stack.</p>
</div>
-<div class="listingblock">
+<div id="nested-diagnostic-context" class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">ThreadContext.push(UUID.randomUUID().toString()); // Add the fishtag;
@@ -428,7 +428,7 @@ ThreadContext.pop();</code></pre>
In this case, attributes associated with the request being processed are
adding at the beginning and removed at the end as follows:</p>
</div>
-<div class="listingblock">
+<div id="mapped-diagnostic-context" class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">ThreadContext.put("id", UUID.randomUUID().toString()); // Add the fishtag;
ThreadContext.put("ipAddress", request.getRemoteAddr());
diff --git a/manual/usage.html b/manual/usage.html
index 2c9b2c08e7..6a785a95de 100644
--- a/manual/usage.html
+++ b/manual/usage.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/manual/webapp.html b/manual/webapp.html
index 4a85bf7add..443484d763 100644
--- a/manual/webapp.html
+++ b/manual/webapp.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="jmx.html">JMX</a>
diff --git a/plugin-reference.html b/plugin-reference.html
index 533d2e2bf7..8ce2cebcb5 100644
--- a/plugin-reference.html
+++ b/plugin-reference.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/release-notes.html b/release-notes.html
index ab77385e01..ca8e046154 100644
--- a/release-notes.html
+++ b/release-notes.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/runtime-dependencies.html b/runtime-dependencies.html
index 5b712fb771..e28fa1b7ee 100644
--- a/runtime-dependencies.html
+++ b/runtime-dependencies.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>
diff --git a/sitemap.xml b/sitemap.xml
index eca25b41eb..83d89c8d83 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -2,282 +2,282 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://logging.apache.org/log4j/2.x/5min.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/articles.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/development.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/download.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/faq.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/index.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/javadoc.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-1.2-api.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-api.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-appserver.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-cassandra.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-couchdb.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-docker.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-flume-ng.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-iostreams.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-jakarta-web.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-jcl.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-jmx-gui.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-jpl.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-jul.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-mongodb3.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-mongodb4.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-slf4j-impl.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-slf4j2-impl.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-spring-boot.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-spring-cloud-config-client.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-spring-cloud-config.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-taglib.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-to-jul.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-to-slf4j.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/log4j-web.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/api-separation.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/api.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/appenders.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/architecture.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/async.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/cloud.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/compatibility.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/configuration.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/customconfig.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/customloglevels.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/eventlogging.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/extending.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/filters.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/flowtracing.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/garbagefree.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/index.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/installation.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/jmx.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/json-template-layout.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/layouts.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/logbuilder.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/logsep.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/lookups.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/markers.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/messages.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/migration.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/performance.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/plugins.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/resource-logger.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/scoped-context.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/scripts.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/systemproperties.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/thread-context.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/usage.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/manual/webapp.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/plugin-reference.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/release-notes.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/runtime-dependencies.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
<url>
<loc>https://logging.apache.org/log4j/2.x/thanks.html</loc>
-<lastmod>2024-05-24T07:36:57.335Z</lastmod>
+<lastmod>2024-05-24T07:38:03.322Z</lastmod>
</url>
</urlset>
diff --git a/thanks.html b/thanks.html
index 3399f5ace3..440aa2b22b 100644
--- a/thanks.html
+++ b/thanks.html
@@ -166,7 +166,7 @@
<a class="nav-link" href="manual/lookups.html">Lookups</a>
</li>
<li class="nav-item" data-depth="2">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="manual/filters.html">Filters</a>
@@ -219,7 +219,7 @@
<a class="nav-link" href="manual/customconfig.html">Programmatic Configuration</a>
</li>
<li class="nav-item" data-depth="1">
- <a class="nav-link" href="manual/customloglevels.html">Custom Log Levels</a>
+ <a class="nav-link" href="manual/customloglevels.html">Log Levels</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="manual/jmx.html">JMX</a>