You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by pk...@apache.org on 2024/08/13 18:02:17 UTC

(logging-log4j2) 01/03: Fix links and remove per-module pages (#2800)

This is an automated email from the ASF dual-hosted git repository.

pkarwasz pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit c6805085c12ef2e7d11a515c435231412603e0db
Author: Piotr P. Karwasz <pi...@karwasz.org>
AuthorDate: Thu Aug 8 09:15:26 2024 +0200

    Fix links and remove per-module pages (#2800)
    
    This PR:
    
    - fixes internal links as far as IDEA can find.
    - removes most `log4j-<something>.adoc` pages, if their content is available elsewhere. For example `log4j-docker` is completely described in `lookups.adoc`.
---
 .../modules/ROOT/examples/hibernate/log4j2.json    |   2 +-
 src/site/antora/modules/ROOT/nav.adoc              |   4 +-
 src/site/antora/modules/ROOT/pages/faq.adoc        |   2 +-
 .../antora/modules/ROOT/pages/log4j-docker.adoc    |  45 -----
 .../antora/modules/ROOT/pages/log4j-flume-ng.adoc  | 225 ---------------------
 src/site/antora/modules/ROOT/pages/log4j-jpl.adoc  |  27 ---
 .../antora/modules/ROOT/pages/log4j-to-slf4j.adoc  |  32 ---
 .../ROOT/pages/manual/appenders/database.adoc      |   4 +-
 .../ROOT/pages/manual/appenders/message-queue.adoc |  50 +++++
 .../ROOT/pages/manual/appenders/network.adoc       |   2 +-
 .../antora/modules/ROOT/pages/manual/async.adoc    |   2 +-
 .../modules/ROOT/pages/manual/configuration.adoc   |   6 +-
 .../antora/modules/ROOT/pages/manual/filters.adoc  |  10 +-
 .../modules/ROOT/pages/manual/garbagefree.adoc     |  12 +-
 .../ROOT/pages/manual/json-template-layout.adoc    |   6 +-
 .../antora/modules/ROOT/pages/manual/lookups.adoc  |   2 +-
 .../modules/ROOT/pages/manual/pattern-layout.adoc  |   2 +-
 .../modules/ROOT/pages/manual/performance.adoc     |   2 +-
 .../_log4j1-eol.adoc => partials/log4j1-eol.adoc}  |   0
 19 files changed, 78 insertions(+), 357 deletions(-)

diff --git a/src/site/antora/modules/ROOT/examples/hibernate/log4j2.json b/src/site/antora/modules/ROOT/examples/hibernate/log4j2.json
index 4859561c8c..991d2fd2c3 100644
--- a/src/site/antora/modules/ROOT/examples/hibernate/log4j2.json
+++ b/src/site/antora/modules/ROOT/examples/hibernate/log4j2.json
@@ -13,7 +13,7 @@
         {
           "name": "org.hibernate.SQL",
           "level": "DEBUG"
-        },
+        }
 
         // Log JDBC bind parameters and extracted values
         //
diff --git a/src/site/antora/modules/ROOT/nav.adoc b/src/site/antora/modules/ROOT/nav.adoc
index f9fb3cf35d..141fd0487f 100644
--- a/src/site/antora/modules/ROOT/nav.adoc
+++ b/src/site/antora/modules/ROOT/nav.adoc
@@ -64,9 +64,9 @@
 * xref:development.adoc[]
 
 .Components
-* xref:log4j-flume-ng.adoc[]
-* xref:log4j-docker.adoc[]
 * xref:log4j-spring-cloud-config-client.adoc[]
+* xref:log4j-jul.adoc[]
+* xref:log4j-to-jul.adoc[]
 
 .Related projects
 * {log4j2-url}[Log4j 2]
diff --git a/src/site/antora/modules/ROOT/pages/faq.adoc b/src/site/antora/modules/ROOT/pages/faq.adoc
index 024005ca19..c50d10b234 100644
--- a/src/site/antora/modules/ROOT/pages/faq.adoc
+++ b/src/site/antora/modules/ROOT/pages/faq.adoc
@@ -135,7 +135,7 @@ This disables level-based status logger filtering and effectively allows all sta
 [#separate_log_files]
 == How do I dynamically write to separate log files?
 
-You can use xref:manual/appenders.adoc#RoutingAppender[the routing appender] to evaluate a log message and forward it to a particular appender.
+You can use xref:manual/appenders/delegating.adoc#RoutingAppender[the routing appender] to evaluate a log message and forward it to a particular appender.
 
 [#api-tradeoffs]
 == What are the trade-offs of using Log4j API versus SLF4J?
diff --git a/src/site/antora/modules/ROOT/pages/log4j-docker.adoc b/src/site/antora/modules/ROOT/pages/log4j-docker.adoc
deleted file mode 100644
index 43d208a94b..0000000000
--- a/src/site/antora/modules/ROOT/pages/log4j-docker.adoc
+++ /dev/null
@@ -1,45 +0,0 @@
-////
-Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-////
-
-= Log4j Docker Support
-
-Log4j supports Docker by providing a Lookup to retrieve container information.
-
-Log4j Docker module offers https://www.docker.com/[Docker]-specific utilities.
-
-The Log4j Docker support requires access to the Docker REST interface.
-In practical terms this means the application either needs access to unix:///var/run/docker.sock through a volume mount (not recommended), bind Docker to another host/port or unix socket.
-or use a proxy application to provide access.
-The https://github.com/apache/logging-log4j2/tree/main/log4j-spring-cloud-config/log4j-spring-cloud-config-samples/log4j-spring-cloud-config-sample-application[Log4j Spring Cloud sample application] uses a socat proxy to access Docker.
-
-== Lookup Attributes
-
-Log4j Docker provides access to the following container attributes:
-
-* containerId - The full id assigned to the container.
-* containerName - The name assigned to the container.
-* imageId - The id assigned to the image.
-* imageName - The name assigned to the image.
-* shortContainerId - The first 12 characters of the container id.
-* shortImageId - The first 12 characters of the image id.
-
-Attributes may be accessed by adding `${docker:containerId}` to the configuration.
-Note that docker variables are only resolved once during logging initialization so they shouldn't be referenced with more than one `$` character.
-
-== Requirements
-
-Log4j Docker requires Log4j Core, Log4j API and a minimum of Java 8.
diff --git a/src/site/antora/modules/ROOT/pages/log4j-flume-ng.adoc b/src/site/antora/modules/ROOT/pages/log4j-flume-ng.adoc
deleted file mode 100644
index 3c6302c220..0000000000
--- a/src/site/antora/modules/ROOT/pages/log4j-flume-ng.adoc
+++ /dev/null
@@ -1,225 +0,0 @@
-////
-Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-////
-
-= Flume Appender
-
-The Flume Appender allows applications to send events to Flume Agents.
-
-== Remote Agent
-
-Including the Log4j flume-ng jar in your Maven-based project as a dependency should cause all the transitive dependencies necessary for the remote Agent to function to be included.
-
-== Persistent Agent
-
-The persistent agent uses Berkeley DB.
-The following dependency should be added to your pom.xml in addition to the log4j-flume-ng dependency.
-
-// TODO: use variables for dependency versions
-
-[source,xml]
-----
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>com.sleepycat</groupId>
-        <artifactId>je</artifactId>
-        <version>5.0.73</version>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
-  <dependencies>
-    <dependency>
-      <groupId>com.sleepycat</groupId>
-      <artifactId>je</artifactId>
-    </dependency>
-  </dependencies>
-  <repositories>
-    <repository>
-      <id>oracleReleases</id>
-      <name>Oracle Released Java Packages</name>
-      <url>http://download.oracle.com/maven</url>
-      <layout>default</layout>
-    </repository>
-  </repositories>
-----
-
-== Embedded Agent
-
-The following is a sample pom file for Maven that can be used as a template for integrating the Flume Embedded Appender into an application.
-
-[source,xml]
-----
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>com.myapp</groupId>
-  <artifactId>myapp</artifactId>
-  <version>0.0.1-SNAPSHOT</version>
-  <name>My App</name>
-  <description>App to test log4j appender</description>
-
-  <properties>
-    <log4j.version>${Log4jReleaseVersion}</log4j.version>
-    <slf4j.version>${slf4jVersion}</slf4j.version>
-    <jackson.version>${jackson1Version}</jackson.version>
-  </properties>
-
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-api</artifactId>
-        <version>${slf4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-ext</artifactId>
-        <version>${slf4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-api</artifactId>
-        <version>${log4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-core</artifactId>
-        <version>${log4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-flume-ng</artifactId>
-        <version>${log4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-slf4j-impl</artifactId>
-        <version>${log4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-jcl</artifactId>
-        <version>${log4j.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.jackson</groupId>
-        <artifactId>jackson-core-asl</artifactId>
-        <version>${jackson.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.jackson</groupId>
-        <artifactId>jackson-mapper-asl</artifactId>
-        <version>${jackson.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.jackson</groupId>
-        <artifactId>jackson-jaxrs</artifactId>
-        <version>${jackson.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.jackson</groupId>
-        <artifactId>jackson-xc</artifactId>
-        <version>${jackson.version}</version>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
-
-  <dependencies>
-    <!-- Log4j 2 API -->
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-api</artifactId>
-    </dependency>
-    <!-- Log4j 1.x API -->
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j12-api</artifactId>
-    </dependency>
-    <!-- Log4j 2 implementation -->
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-core</artifactId>
-    </dependency>
-    <!-- SLF4J to Log4j 2 binding -->
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>slf4j-impl</artifactId>
-    </dependency>
-    <!-- SLF4J API -->
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
-    </dependency>
-    <!-- SLF4J extensions -->
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-ext</artifactId>
-    </dependency>
-    <!-- Commson Logging to Log4j 2 binding -->
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-jcl</artifactId>
-    </dependency>
-    <!-- Avro transport protocol - required for Flume -->
-    <dependency>
-      <groupId>org.apache.avro</groupId>
-      <artifactId>avro</artifactId>
-      <version>1.6.3</version>
-    </dependency>
-    <!-- Hadoop core - required by embedded Flume Agent -->
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-core</artifactId>
-      <version>1.0.3</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>servlet-api</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>servlet-api-2.5</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>junit</groupId>
-          <artifactId>junit</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <!-- Flume File Channel - required by embedded Flume agent -->
-    <dependency>
-      <groupId>org.apache.flume.flume-ng-channels</groupId>
-      <artifactId>flume-file-channel</artifactId>
-      <version>1.2.0</version>
-      <exclusions>
-        <exclusion>
-          <groupId>log4j</groupId>
-          <artifactId>log4j</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.slf4j</groupId>
-          <artifactId>slf4j-log4j12</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-  </dependencies>
-</project>
-----
-
-== Requirements
-
-The Flume Appender requires the Log4J 2 API and implementation.
diff --git a/src/site/antora/modules/ROOT/pages/log4j-jpl.adoc b/src/site/antora/modules/ROOT/pages/log4j-jpl.adoc
deleted file mode 100644
index 87cc6e4fb7..0000000000
--- a/src/site/antora/modules/ROOT/pages/log4j-jpl.adoc
+++ /dev/null
@@ -1,27 +0,0 @@
-////
-Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-////
-= Log4j JDK Platform Logging Adapter
-
-The Log4j 2 JDK Logging Adapter allow to route all System.Logger events to Log4j 2 APIs.
-
-== Requirements
-
-The JDK Platform Logging Adapter is dependent on the Log4j API as well as Java 11.
-
-== Usage
-
-Simply include the Log4j 2 JDK Platform Logging Adapter jar along with the Log4j2 jars to cause all System.Logger  logging to be handled by Log4j 2.
diff --git a/src/site/antora/modules/ROOT/pages/log4j-to-slf4j.adoc b/src/site/antora/modules/ROOT/pages/log4j-to-slf4j.adoc
deleted file mode 100644
index 3996e4ea0e..0000000000
--- a/src/site/antora/modules/ROOT/pages/log4j-to-slf4j.adoc
+++ /dev/null
@@ -1,32 +0,0 @@
-////
-Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-////
-= Log4j to SLF4J Adapter
-
-The Log4j 2 to SLF4J Adapter allows applications coded to the Log4j 2 API to be routed to SLF4J.
-Use of this adapter may cause some loss of performance as the Log4j 2 Messages must be formatted before they can be passed to SLF4J.
-With Log4j 2 as the implementation these would normally be formatted only when they are accessed by a Filter or Appender.
-
-== Requirements
-
-The Log4j 2 to SLF4J adapter is dependent on the Log4j 2 API and the SLF4J API.
-
-== Usage
-
-Include this jar, the SLF4J jar(s) and an SLF4J logging implementation jar together.
-Configure the logging implementation as required.
-
-Use of the SLF4J adapter (log4j-to-slf4j-2.x.jar) together with the SLF4J bridge (log4j-slf4j-impl-2.x.jar) should never be attempted as it will cause events to endlessly be routed between SLF4J and Log4j 2.
diff --git a/src/site/antora/modules/ROOT/pages/manual/appenders/database.adoc b/src/site/antora/modules/ROOT/pages/manual/appenders/database.adoc
index 313164348a..b4c295e22e 100644
--- a/src/site/antora/modules/ROOT/pages/manual/appenders/database.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/appenders/database.adoc
@@ -87,7 +87,7 @@ for a list of available type converters.
 a|
 If set, the value will be added **directly** in the insert statement of the database-specific query language.
 
-[CAUTION]
+[WARNING]
 ====
 This value is added as-is, without any validation.
 Never use user-provided data to determine its value.
@@ -100,7 +100,7 @@ a|
 It specifies the database-specific parameter marker to use.
 Otherwise, the default parameter marker for the database language will be used.
 
-[CAUTION]
+[WARNING]
 ====
 This value is added as-is, without any validation.
 Never use user-provided data to determine its value.
diff --git a/src/site/antora/modules/ROOT/pages/manual/appenders/message-queue.adoc b/src/site/antora/modules/ROOT/pages/manual/appenders/message-queue.adoc
index 1c19511b8a..4b18de0887 100644
--- a/src/site/antora/modules/ROOT/pages/manual/appenders/message-queue.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/appenders/message-queue.adoc
@@ -299,6 +299,56 @@ runtimeOnly 'org.apache.flume:flume-ng-embedded-agent:{flume-version}'
 
 xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-flume-ng_org-apache-logging-log4j-flume-appender-FlumeAppender[{plugin-reference-marker} Plugin reference for `Flume`]
 
+To use the Flume Appender <<FlumeAppender-mode-PERSISTENT,PERSISTENT mode>>, you need the following additional dependency:
+
+[tabs]
+====
+Maven::
++
+[source,xml,subs="+attributes"]
+----
+<dependency>
+  <groupId>com.sleepycat</groupId>
+  <artifactId>je</artifactId>
+  <version>{je-version}</version>
+  <scope>runtime</scope>
+</dependency>
+----
+
+Gradle::
++
+[source,groovy]
+----
+runtimeOnly 'com.sleepycat:je:{je-version}'
+----
+====
+
+If you use the Flume Appender in <<FlumeAppender-mode-EMBEDDED,EMBEDDED mode>>, you need to add the `flume-ng-embedded-agent` dependency below and all the channel and sink implementation you plan to use.
+
+See https://flume.apache.org/releases/content/1.11.0/FlumeDeveloperGuide.html#embedded-agent[Flume Embedded Agent] documentation for more details.
+
+[tabs]
+====
+Maven::
++
+[source,xml,subs="+attributes"]
+----
+<dependency>
+  <groupId>org.apache.flume</groupId>
+  <artifactId>flume-ng-embedded-agent</artifactId>
+  <version>{flume-version}</version>
+  <scope>runtime</scope>
+</dependency>
+----
+
+Gradle::
++
+[source,groovy]
+----
+runtimeOnly 'org.apache.flume:flume-ng-embedded-agent:{flume-version}'
+----
+====
+
 [#Agent]
 === Agent Addresses
 
diff --git a/src/site/antora/modules/ROOT/pages/manual/appenders/network.adoc b/src/site/antora/modules/ROOT/pages/manual/appenders/network.adoc
index 8f3d15be88..edb70569f5 100644
--- a/src/site/antora/modules/ROOT/pages/manual/appenders/network.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/appenders/network.adoc
@@ -425,7 +425,7 @@ include::example$manual/appenders/network/http.properties[tag=appender]
 <1> This HTTP header is evaluated once at configuration time.
 <2> This HTTP header is evaluated at each log event.
 
-[[SMTPAppender]]
+[#SmtpAppender]
 == SMTP Appender
 
 The SMTP writes log events to an e-mail service using
diff --git a/src/site/antora/modules/ROOT/pages/manual/async.adoc b/src/site/antora/modules/ROOT/pages/manual/async.adoc
index b14fedb58c..407fa868b3 100644
--- a/src/site/antora/modules/ROOT/pages/manual/async.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/async.adoc
@@ -23,7 +23,7 @@ Log4j offers out-of-the-box two different asynchronous logging solutions:
 Asynchronous appender::
 A classical queue-based asynchronous appender, which is available since Log4j 1.
 +
-See xref:manual/appenders.adoc#AsyncAppender[Asynchronous appender] for more details.
+See xref:manual/appenders/delegating.adoc#AsyncAppender[Asynchronous appender] for more details.
 
 Asynchronous loggers::
 Asynchronous loggers are a new feature available since Log4j 2.
diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration.adoc
index 63d2a07d09..275537024f 100644
--- a/src/site/antora/modules/ROOT/pages/manual/configuration.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/configuration.adoc
@@ -246,7 +246,7 @@ We will cover them while <<configuring-loggers, configuring loggers>>.
 [[Appenders]] Appenders::
 xref:manual/appenders.adoc[] are the exit point of the logging pipeline.
 They decide which resource (console, file, database, or similar) the log event is sent to.
-In the examples of this chapter, we will only use the xref:manual/appenders.adoc#consoleappender[console appender] and the xref:manual/appenders.adoc#fileappender[file appender].
+In the examples of this chapter, we will only use the xref:manual/appenders.adoc#ConsoleAppender[console appender] and the xref:manual/appenders/file.adoc[file appender].
 
 Layouts::
 xref:manual/layouts.adoc[] tell appenders how to format the log event: text, JSON, XML, or similar.
@@ -947,8 +947,8 @@ See xref:manual/lookups.adoc#evaluation-contexts[lookup evaluation contexts] for
 [NOTE]
 ====
 The
-xref:manual/appenders.adoc#Routes[`Route`] component of the
-xref:manual/appenders.adoc#RoutingAppender[`RoutingAppender`]
+xref:manual/appenders/delegating.adoc#Routes[`Route`] component of the
+xref:manual/appenders/delegating.adoc#RoutingAppender[Routing Appender]
 is a different case altogether.
 The attributes of its children are expanded at runtime, but are not expanded at configuration time.
 
diff --git a/src/site/antora/modules/ROOT/pages/manual/filters.adoc b/src/site/antora/modules/ROOT/pages/manual/filters.adoc
index 2300ad1386..2789db63c5 100644
--- a/src/site/antora/modules/ROOT/pages/manual/filters.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/filters.adoc
@@ -114,7 +114,7 @@ will not be performed for disabled log statements.
 * this stage precedes the asynchronous calls performed by either
 xref:manual/async.adoc[asynchronous loggers]
 or
-xref:manual/appenders.adoc#AsyncAppender[asynchronous appenders].
+xref:manual/appenders/delegating.adoc#AsyncAppender[asynchronous appenders].
 ====
 
 [#logger-config-stage]
@@ -227,7 +227,7 @@ All standard appenders implement `Filterable`.
 [NOTE]
 ====
 Some appenders like the
-xref:manual/appenders.adoc#AsyncAppender[asynchronous appender]
+xref:manual/appenders/delegating.adoc#AsyncAppender[asynchronous appender]
 use appender references to transfer log events to other appenders.
 In such a case, the filtering process goes back to the <<appender-control-stage,`AppenderControl` stage>>.
 ====
@@ -529,7 +529,7 @@ the `LevelMatchFilter` supports the following parameter:
 [TIP]
 ====
 If you wish to use a different log file for each log level, you should also use a
-xref:manual/appenders.adoc#RoutingAppender[`Routing` appender] together with the
+xref:manual/appenders/delegating.adoc#RoutingAppender[`Routing` appender] together with the
 xref:manual/lookups.adoc#EventLookup[`${event:Level}` lookup].
 Such a solution will ensure that:
 
@@ -1082,7 +1082,7 @@ to modify the ``KeyValuePair``s without restarting your application.
 
 xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-filter-StructuredDataFilter[📖 Plugin reference for `StructuredDataFilter`]
 
-[#ContextMapFilter]
+[#ThreadContextMapFilter]
 ==== `ContextMapFilter`
 
 The `ContextMapFilter` works in the same way as the <<MapFilter>> above,
@@ -1175,7 +1175,7 @@ xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-loggin
 [#MutableThreadContextMapFilter]
 ==== `MutableContextMapFilter`
 
-The `MutableContextMapFilter` is an alternative version of <<ContextMapFilter>> that also uses the
+The `MutableContextMapFilter` is an alternative version of <<ThreadContextMapFilter>> that also uses the
 {log4j2-url}/manual/thread-context.html[context data map]
 to filter messages, but externalizes the <<configuration-map>>, so it can be kept in a separate location.
 
diff --git a/src/site/antora/modules/ROOT/pages/manual/garbagefree.adoc b/src/site/antora/modules/ROOT/pages/manual/garbagefree.adoc
index 8feaeeda77..a18ebba3f2 100644
--- a/src/site/antora/modules/ROOT/pages/manual/garbagefree.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/garbagefree.adoc
@@ -95,13 +95,13 @@ The following xref:manual/appenders.adoc[appenders] are garbage-free during stea
 
 // Maintain the alphabetical ordering while making changes, please!
 * xref:manual/appenders.adoc#ConsoleAppender[`ConsoleAppender`]
-* xref:manual/appenders.adoc#FileAppender[`FileAppender`]
-* xref:manual/appenders.adoc#MemoryMappedFileAppender[`MemoryMappedFileAppender`]
-* xref:manual/appenders.adoc#RandomAccessFileAppender[`RandomAccessFileAppender`]
-* xref:manual/appenders.adoc#RollingFileAppender[`RollingFileAppender`] (except during rollover)
-* xref:manual/appenders.adoc#RollingRandomAccessFileAppender[`RollingRandomAccessFileAppender`] (except during rollover)
+* xref:manual/appenders/file.adoc#FileAppender[`FileAppender`]
+* xref:manual/appenders/file.adoc#MemoryMappedFileAppender[`MemoryMappedFileAppender`]
+* xref:manual/appenders/file.adoc#RandomAccessFileAppender[`RandomAccessFileAppender`]
+* xref:manual/appenders/rolling-file.adoc#RollingFileAppender[`RollingFileAppender`] (except during rollover)
+* xref:manual/appenders/rolling-file.adoc#RollingRandomAccessFileAppender[`RollingRandomAccessFileAppender`] (except during rollover)
 
-Any other appender not shared in the above list (including xref:manual/appenders.adoc#AsyncAppender[`AsyncAppender`]) is not garbage-free.
+Any other appender not shared in the above list (including xref:manual/appenders/delegating.adoc#AsyncAppender[`AsyncAppender`]) is not garbage-free.
 
 .Implementation notes
 [%collapsible]
diff --git a/src/site/antora/modules/ROOT/pages/manual/json-template-layout.adoc b/src/site/antora/modules/ROOT/pages/manual/json-template-layout.adoc
index 188b910747..7f55775a6f 100644
--- a/src/site/antora/modules/ROOT/pages/manual/json-template-layout.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/json-template-layout.adoc
@@ -931,7 +931,7 @@ Resolve the logger's fully qualified class name:
 [#event-template-resolver-main]
 ===== `main`
 
-Performs xref:manual/lookups.adoc#AppMainArgsLookup[Main Argument Lookup] for the given `index` or `key`
+Performs xref:manual/lookups.adoc#MainMapLookup[Main Argument Lookup] for the given `index` or `key`
 
 .`main` event template resolver grammar
 [source]
@@ -1658,13 +1658,13 @@ xref:manual/lookups.adoc[] are intended as a very generic, convenience utility t
 |xref:manual/lookups.adoc#LowerLookup[Lower Lookup]
 |<<event-template-resolver-caseConverter>>
 
-|xref:manual/lookups.adoc#AppMainArgsLookup[Main Arguments Lookup]
+|xref:manual/lookups.adoc#MainMapLookup[Main Arguments Lookup]
 |<<event-template-resolver-main>>
 
 |xref:manual/lookups.adoc#MapLookup[Map Lookup]
 |<<event-template-resolver-map>>
 
-|xref:manual/lookups.adoc#marker-lookup[Marker Lookup]
+|xref:manual/lookups.adoc#MarkerLookup[Marker Lookup]
 |<<event-template-resolver-marker>>
 
 |xref:manual/lookups.adoc#UpperLookup[Upper Lookup]
diff --git a/src/site/antora/modules/ROOT/pages/manual/lookups.adoc b/src/site/antora/modules/ROOT/pages/manual/lookups.adoc
index 0f0acfee21..5719579a57 100644
--- a/src/site/antora/modules/ROOT/pages/manual/lookups.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/lookups.adoc
@@ -360,7 +360,7 @@ See <<lookups-patterns>> for more information.
 | `docker:<key>`
 
 where `<key>` is one of the <<DockerLookup-keys>>.
-| Dependency | xref:log4j-docker.adoc[]
+| Dependency | `log4j-docker`
 |===
 
 Docker Lookup queries https://docs.docker.com/engine/api/[the API of the Docker Engine] running your container.
diff --git a/src/site/antora/modules/ROOT/pages/manual/pattern-layout.adoc b/src/site/antora/modules/ROOT/pages/manual/pattern-layout.adoc
index 166cbeac92..17d3f2d673 100644
--- a/src/site/antora/modules/ROOT/pages/manual/pattern-layout.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/pattern-layout.adoc
@@ -1735,7 +1735,7 @@ xref:manual/lookups.adoc[] are intended as a very generic, convenience utility t
 |xref:manual/lookups.adoc#MapLookup[Map Lookup]
 |<<converter-map>>
 
-|xref:manual/lookups.adoc#marker-lookup[Marker Lookup]
+|xref:manual/lookups.adoc#MarkerLookup[Marker Lookup]
 |<<converter-marker>>
 |===
 =====
diff --git a/src/site/antora/modules/ROOT/pages/manual/performance.adoc b/src/site/antora/modules/ROOT/pages/manual/performance.adoc
index 738782931e..4b52fff0b0 100644
--- a/src/site/antora/modules/ROOT/pages/manual/performance.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/performance.adoc
@@ -164,7 +164,7 @@ Their aim is to return from a `log()` call to the application as soon as possibl
 [#async-appender]
 ===== Asynchronous appender
 
-The xref:manual/appenders.adoc#AsyncAppender[asynchronous appender] accepts references to other appenders and causes log events to be written to them on a separate thread.
+The xref:manual/appenders/delegating.adoc#AsyncAppender[asynchronous appender] accepts references to other appenders and causes log events to be written to them on a separate thread.
 The backing queue uses `ArrayBlockingQueue` by default, though it can be replaced with a better performing one suitable for your use case.
 
 [#gcfree]
diff --git a/src/site/antora/modules/ROOT/pages/_log4j1-eol.adoc b/src/site/antora/modules/ROOT/partials/log4j1-eol.adoc
similarity index 100%
rename from src/site/antora/modules/ROOT/pages/_log4j1-eol.adoc
rename to src/site/antora/modules/ROOT/partials/log4j1-eol.adoc