Revamp network appender documentation (#2796)

Revamp network appender documentation (+review)

We split off the documentation of the UDP, TCP, HTTP and SMTP appenders to a new page and apply the improvements from the previous PRs.

Part of #2528.

Co-authored-by: Volkan Yazıcı <volkan@yazi.ci>
diff --git a/pom.xml b/pom.xml
index 1dc9240..c77ea20 100644
--- a/pom.xml
+++ b/pom.xml
@@ -337,6 +337,7 @@
     <site-conversant.version>1.2.21</site-conversant.version>
     <site-disruptor.version>4.0.0</site-disruptor.version>
     <site-jackson.version>2.17.2</site-jackson.version>
+    <site-javax-mail.version>1.6.2</site-javax-mail.version>
     <site-jctools.version>4.0.5</site-jctools.version>
     <site-log4j-api.version>2.23.1</site-log4j-api.version>
     <site-log4j-core.version>2.23.1</site-log4j-core.version>
@@ -769,6 +770,12 @@
           </dependency>
 
           <dependency>
+            <groupId>com.sun.mail</groupId>
+            <artifactId>javax.mail</artifactId>
+            <version>${site-javax-mail.version}</version>
+          </dependency>
+
+          <dependency>
             <groupId>org.jctools</groupId>
             <artifactId>jctools-core</artifactId>
             <version>${site-jctools.version}</version>
diff --git a/src/site/antora/antora.tmpl.yml b/src/site/antora/antora.tmpl.yml
index 406a721..74be899 100644
--- a/src/site/antora/antora.tmpl.yml
+++ b/src/site/antora/antora.tmpl.yml
@@ -38,6 +38,7 @@
 start_page: index.adoc
 asciidoc:
   attributes:
+    plugin-reference-marker: "&#x1F4D6;"
     # Commons
     antora-examples-url: "${scm.url}/tree/${scm.tag}/src/site/antora/modules/ROOT/examples"
     project-github-url: "${scm.url}/tree/${scm.tag}"
@@ -57,6 +58,7 @@
     conversant-version: "${site-conversant.version}"
     disruptor-version: "${site-disruptor.version}"
     jackson-version: "${site-jackson.version}"
+    javax-mail-version: "${site-javax-mail.version}"
     jctools-version: "${site-jctools.version}"
     log4j-api-version: "${log4j-api.version}"
     log4j-core-version: "${site-log4j-core.version}"
diff --git a/src/site/antora/antora.yml b/src/site/antora/antora.yml
index 08535b1..ac05071 100644
--- a/src/site/antora/antora.yml
+++ b/src/site/antora/antora.yml
@@ -38,6 +38,7 @@
 start_page: index.adoc
 asciidoc:
   attributes:
+    plugin-reference-marker: "&#x1F4D6;"
     # Commons
     antora-examples-url: "https://github.com/apache/logging-log4j2/tree/2.x/src/site/antora/modules/ROOT/examples"
     project-github-url: "https://github.com/apache/logging-log4j2/tree/2.x"
@@ -57,6 +58,7 @@
     conversant-version: "1.2.3-conversant"
     disruptor-version: "1.2.3-disruptor"
     jackson-version: "1.2.3-jackson"
+    javax-mail-version: "1.2.3-javax-mail"
     jctools-version: "1.2.3-jctools"
     log4j-api-version: "1.2.3-api"
     log4j-core-version: "1.2.3-core"
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/http.json b/src/site/antora/modules/ROOT/examples/manual/appenders/network/http.json
new file mode 100644
index 0000000..cd7d6e8
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/http.json
@@ -0,0 +1,41 @@
+{
+  "Configuration": {
+    "Appenders": {
+      // tag::appender[]
+      "Http": {
+        "name": "HTTP",
+        "url": "https://localhost/logs",
+        "JsonTemplateLayout": {},
+        "Property": [
+          { // <1>
+            "name": "X-Java-Version",
+            "value": "${java:version}"
+          },
+          { // <2>
+            "name": "X-Context-Path",
+            "value": "$${web:contextPath}"
+          }
+        ],
+        "Ssl": {
+          "KeyStore": {
+            "location": "keystore.p12",
+            "password": "${env:KEYSTORE_PASSWORD}"
+          },
+          "TrustStore": {
+            "location": "truststore.p12",
+            "password": "${env:TRUSTSTORE_PASSWORD}"
+          }
+        }
+      }
+      // end::appender[]
+    },
+    "Loggers": {
+      "Root": {
+        "level": "INFO",
+        "AppenderRef": {
+          "ref": "HTTP"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/http.properties b/src/site/antora/modules/ROOT/examples/manual/appenders/network/http.properties
new file mode 100644
index 0000000..aca1ffc
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/http.properties
@@ -0,0 +1,43 @@
+#
+# 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.
+#
+##
+# tag::appender[]
+appender.0.type = Http
+appender.0.name = HTTP
+appender.0.url = https://localhost/logs
+
+# <1>
+appender.0.p0.type = Property
+appender.0.p0.name = X-Java-Version
+appender.0.p0.value = ${java:version}
+# <2>
+appender.0.p1.type = Property
+appender.0.p1.name = X-Context-Path
+appender.0.p1.value = $${web:contextPath}
+
+appender.0.layout.type = JsonTemplateLayout
+
+appender.0.ssl.type = Ssl
+appender.0.ssl.ks.type = KeyStore
+appender.0.ssl.ks.password = ${env:KEYSTORE_PASSWORD}
+
+appender.0.ssl.ts.type = TrustStore
+appender.0.ssl.ts.password = ${env:TRUSTSTORE_PASSWORD}
+# end::appender[]
+
+rootLogger.level = INFO
+rootLogger.appenderRef.0.ref = HTTP
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/http.xml b/src/site/antora/modules/ROOT/examples/manual/appenders/network/http.xml
new file mode 100644
index 0000000..60e5aa1
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/http.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+<Configuration xmlns="https://logging.apache.org/xml/ns"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xsi:schemaLocation="
+                   https://logging.apache.org/xml/ns
+                   https://logging.apache.org/xml/ns/log4j-config-2.xsd">
+  <Appenders>
+    <!-- tag::appender[] -->
+    <Http name="HTTP" url="https://localhost/logs">
+      <Property name="X-Java-Version" value="${java:version}"/> <!--1-->
+      <Property name="X-Context-Path" value="$${web:contextPath}"/> <!--2-->
+      <JsonTemplateLayout/>
+      <Ssl>
+        <KeyStore location="keystore.p12"
+                  password="${env:KEYSTORE_PASSWORD}"/>
+        <TrustStore location="truststore.p12"
+                    password="${env:TRUSTSTORE_PASSWORD}"/>
+      </Ssl>
+    </Http>
+    <!-- end::appender[] -->
+  </Appenders>
+  <Loggers>
+    <Root level="INFO">
+      <AppenderRef ref="HTTP"/>
+    </Root>
+  </Loggers>
+</Configuration>
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/http.yaml b/src/site/antora/modules/ROOT/examples/manual/appenders/network/http.yaml
new file mode 100644
index 0000000..18e969b
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/http.yaml
@@ -0,0 +1,44 @@
+#
+# 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.
+#
+Configuration:
+  Appenders:
+    # tag::appender[]
+    Http:
+      name: "HTTP"
+      host: "localhost"
+      url: "https://localhost/logs"
+      Property:
+        # <1>
+        - name: "X-Java-Version"
+          value: "${java:version}"
+        # <2>
+        - name: "X-Context-Path"
+          value: "$${web:contextPath}"
+      JsonTemplateLayout: {}
+      Ssl:
+        KeyStore:
+          location: "keystore.p12"
+          password: "${env:KEYSTORE_PASSWORD}"
+        TrustStore:
+          location: "truststore.p12"
+          password: "${env:TRUSTSTORE_PASSWORD}"
+      # end::appender[]
+  Loggers:
+    Root:
+      level: "INFO"
+      AppenderRef:
+        ref: "HTTP"
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/smtp.json b/src/site/antora/modules/ROOT/examples/manual/appenders/network/smtp.json
new file mode 100644
index 0000000..467e97d
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/smtp.json
@@ -0,0 +1,38 @@
+{
+  "Configuration": {
+    "Appenders": {
+      // tag::appender[]
+      "SMTP": {
+        "name": "SMTP",
+        "smtpProtocol": "smtps",
+        "smtpHost": "mx.example.org",
+        "from": "app@example.org",
+        "to": "root@example.org",
+        "subject": "[%markerSimpleName] Security incident on ${hostName}", // <1>
+        "MarkerFilter": { // <2>
+          "marker": "AUDIT"
+        },
+        "HtmlLayout": {},
+        "Ssl": {
+          "KeyStore": {
+            "location": "keystore.p12",
+            "password": "${env:KEYSTORE_PASSWORD}"
+          },
+          "TrustStore": {
+            "location": "truststore.p12",
+            "password": "${env:TRUSTSTORE_PASSWORD}"
+          }
+        }
+      }
+      // end::appender[]
+    },
+    "Loggers": {
+      "Root": {
+        "level": "INFO",
+        "AppenderRef": {
+          "ref": "SMTP"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/smtp.properties b/src/site/antora/modules/ROOT/examples/manual/appenders/network/smtp.properties
new file mode 100644
index 0000000..e8d1f5b
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/smtp.properties
@@ -0,0 +1,45 @@
+#
+# 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.
+#
+##
+# tag::appender[]
+appender.0.type = SMTP
+appender.0.name = SMTP
+appender.0.url = https://localhost/logs
+
+appender.0.smtpProtocol = smtps
+appender.0.smtpHost = mx.example.org
+appender.0.from = app@example.org
+appender.0.to = root@example.org
+# <1>
+appender.0.subject = [%markerSimpleName] Security incident on ${hostName}
+
+# <2>
+appender.0.filter.0.type = MarkerFilter
+appender.0.filter.0.marker = AUDIT
+
+appender.0.layout.type = HtmlLayout
+
+appender.0.ssl.type = Ssl
+appender.0.ssl.ks.type = KeyStore
+appender.0.ssl.ks.password = ${env:KEYSTORE_PASSWORD}
+
+appender.0.ssl.ts.type = TrustStore
+appender.0.ssl.ts.password = ${env:TRUSTSTORE_PASSWORD}
+# end::appender[]
+
+rootLogger.level = INFO
+rootLogger.appenderRef.0.ref = SMTP
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/smtp.xml b/src/site/antora/modules/ROOT/examples/manual/appenders/network/smtp.xml
new file mode 100644
index 0000000..c756510
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/smtp.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+<Configuration xmlns="https://logging.apache.org/xml/ns"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xsi:schemaLocation="
+                   https://logging.apache.org/xml/ns
+                   https://logging.apache.org/xml/ns/log4j-config-2.xsd">
+  <Appenders>
+    <!-- tag::appender[] -->
+    <SMTP name="SMTP"
+          smtpProtocol="smtps"
+          smtpHost="mx.example.org"
+          from="app@example.org"
+          to="root@example.org"
+          subject="[%markerSimpleName] Security incident on ${hostName}"> <!--1-->
+      <MarkerFilter marker="AUDIT"/> <!--2-->
+      <HtmlLayout/>
+      <Ssl>
+        <KeyStore location="keystore.p12"
+                  password="${env:KEYSTORE_PASSWORD}"/>
+        <TrustStore location="truststore.p12"
+                    password="${env:TRUSTSTORE_PASSWORD}"/>
+      </Ssl>
+    </SMTP>
+    <!-- end::appender[] -->
+  </Appenders>
+  <Loggers>
+    <Root level="INFO">
+      <AppenderRef ref="SMTP"/>
+    </Root>
+  </Loggers>
+</Configuration>
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/smtp.yaml b/src/site/antora/modules/ROOT/examples/manual/appenders/network/smtp.yaml
new file mode 100644
index 0000000..274d406
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/smtp.yaml
@@ -0,0 +1,42 @@
+#
+# 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.
+#
+Configuration:
+  Appenders:
+    # tag::appender[]
+    SMTP:
+      name: "SMTP"
+      smtpProtocol: "smtps"
+      smtpHost: "mx.example.org"
+      from: "app@example.org"
+      to: "root@example.org"
+      subject: "[%markerSimpleName] Security incident on ${hostName}" # <1>
+      MarkerFilter: # <2>
+        marker: "AUDIT"
+      HtmlLayout: {}
+      Ssl:
+        KeyStore:
+          location: "keystore.p12"
+          password: "${env:KEYSTORE_PASSWORD}"
+        TrustStore:
+          location: "truststore.p12"
+          password: "${env:TRUSTSTORE_PASSWORD}"
+      # end::appender[]
+  Loggers:
+    Root:
+      level: "INFO"
+      AppenderRef:
+        ref: "SMTP"
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/socket.json b/src/site/antora/modules/ROOT/examples/manual/appenders/network/socket.json
new file mode 100644
index 0000000..2e8461f
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/socket.json
@@ -0,0 +1,37 @@
+{
+  "Configuration": {
+    "Appenders": {
+      // tag::appender[]
+      "Socket": {
+        "name": "SYSLOG",
+        "host": "syslog.local",
+        "port": 6514,
+        "Rfc5424Layout": {
+          "appName": "myApp",
+          "facility": "DAEMON",
+          "id": "Log4j",
+          "newLineEscape": "\\n"
+        },
+        "Ssl": {
+          "KeyStore": {
+            "location": "keystore.p12",
+            "password": "${env:KEYSTORE_PASSWORD}"
+          },
+          "TrustStore": {
+            "location": "truststore.p12",
+            "password": "${env:TRUSTSTORE_PASSWORD}"
+          }
+        }
+      }
+      // end::appender[]
+    },
+    "Loggers": {
+      "Root": {
+        "level": "INFO",
+        "AppenderRef": {
+          "ref": "SYSLOG"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/socket.properties b/src/site/antora/modules/ROOT/examples/manual/appenders/network/socket.properties
new file mode 100644
index 0000000..4889b9d
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/socket.properties
@@ -0,0 +1,39 @@
+#
+# 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.
+#
+##
+# tag::appender[]
+appender.0.type = Socket
+appender.0.name = SYSLOG
+appender.0.host = syslog.local
+appender.0.port = 6514
+
+appender.0.layout.type = Rfc5424Layout
+appender.0.layout.appName = myApp
+appender.0.layout.facility = DAEMON
+appender.0.layout.id = Log4j
+appender.0.layout.newLineEscape = \\n
+
+appender.0.ssl.type = Ssl
+appender.0.ssl.ks.type = KeyStore
+appender.0.ssl.ks.password = ${env:KEYSTORE_PASSWORD}
+
+appender.0.ssl.ts.type = TrustStore
+appender.0.ssl.ts.password = ${env:TRUSTSTORE_PASSWORD}
+# end::appender[]
+
+rootLogger.level = INFO
+rootLogger.appenderRef.0.ref = SYSLOG
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/socket.xml b/src/site/antora/modules/ROOT/examples/manual/appenders/network/socket.xml
new file mode 100644
index 0000000..c094e7b
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/socket.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+<Configuration xmlns="https://logging.apache.org/xml/ns"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xsi:schemaLocation="
+                   https://logging.apache.org/xml/ns
+                   https://logging.apache.org/xml/ns/log4j-config-2.xsd">
+  <Appenders>
+    <!-- tag::appender[] -->
+    <Socket name="SYSLOG"
+            host="syslog.local"
+            port="6514">
+      <Rfc5424Layout appName="myApp"
+                     facility="DAEMON"
+                     id="Log4j"
+                     newLineEscape="\n"/>
+      <Ssl>
+        <KeyStore location="keystore.p12"
+                  password="${env:KEYSTORE_PASSWORD}"/>
+        <TrustStore location="truststore.p12"
+                    password="${env:TRUSTSTORE_PASSWORD}"/>
+      </Ssl>
+    </Socket>
+    <!-- end::appender[] -->
+  </Appenders>
+  <Loggers>
+    <Root level="INFO">
+      <AppenderRef ref="SYSLOG"/>
+    </Root>
+  </Loggers>
+</Configuration>
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/socket.yaml b/src/site/antora/modules/ROOT/examples/manual/appenders/network/socket.yaml
new file mode 100644
index 0000000..270f731
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/socket.yaml
@@ -0,0 +1,41 @@
+#
+# 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.
+#
+Configuration:
+  Appenders:
+    # tag::appender[]
+    Socket:
+      name: "SYSLOG"
+      host: "syslog.local"
+      port: 6514
+      Rfc5424Layout:
+        appName: "myApp"
+        facility: "DAEMON"
+        id: "Log4j"
+        newLineEscape: "\\n"
+      Ssl:
+        KeyStore:
+          location: "keystore.p12"
+          password: "${env:KEYSTORE_PASSWORD}"
+        TrustStore:
+          location: "truststore.p12"
+          password: "${env:TRUSTSTORE_PASSWORD}"
+      # end::appender[]
+  Loggers:
+    Root:
+      level: "INFO"
+      AppenderRef:
+        ref: "SYSLOG"
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/ssl.json b/src/site/antora/modules/ROOT/examples/manual/appenders/network/ssl.json
new file mode 100644
index 0000000..15826eb
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/ssl.json
@@ -0,0 +1,32 @@
+{
+  "Configuration": {
+    "Appenders": {
+      "Socket": {
+        "name": "SOCKET",
+        "host": "localhost",
+        // tag::ssl[]
+        "Ssl": {
+          "KeyStore": {
+            "location": "keystore.p12",
+            "type": "PKCS12",
+            "password": "${env:KEYSTORE_PASSWORD}"
+          },
+          "TrustStore": {
+            "location": "truststore.p12",
+            "type": "PKCS12",
+            "passwordEnvironmentVariable": "TRUSTSTORE_PASSWORD"
+          }
+        }
+        // end::ssl[]
+      }
+    },
+    "Loggers": {
+      "Root": {
+        "level": "INFO",
+        "AppenderRef": {
+          "ref": "SOCKET"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/ssl.properties b/src/site/antora/modules/ROOT/examples/manual/appenders/network/ssl.properties
new file mode 100644
index 0000000..b8292de
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/ssl.properties
@@ -0,0 +1,31 @@
+#
+# 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.
+#
+appender.0.type = Socket
+appender.0.name = SOCKET
+appender.0.host = localhost
+
+# tag::ssl[]
+appender.0.ssl.type = Ssl
+appender.0.ssl.ks.type = KeyStore
+appender.0.ssl.ks.password = ${env:KEYSTORE_PASSWORD}
+
+appender.0.ssl.ts.type = TrustStore
+appender.0.ssl.ts.passwordEnvironmentVariable = TRUSTSTORE_PASSWORD
+# end::ssl[]
+
+rootLogger.level = INFO
+rootLogger.appaenderRef.0.ref = SOCKET
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/ssl.xml b/src/site/antora/modules/ROOT/examples/manual/appenders/network/ssl.xml
new file mode 100644
index 0000000..e064bad
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/ssl.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+<Configuration xmlns="https://logging.apache.org/xml/ns"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xsi:schemaLocation="
+                   https://logging.apache.org/xml/ns
+                   https://logging.apache.org/xml/ns/log4j-config-2.xsd">
+  <Appenders>
+    <Socket name="SOCKET" host="localhost">
+      <!-- tag::ssl[] -->
+      <Ssl>
+        <KeyStore location="keystore.p12"
+                  type="PKCS12"
+                  password="${env:KEYSTORE_PASSWORD}"/>
+        <TrustStore location="truststore.p12"
+                    type="PKCS12"
+                    passwordEnvironmentVariable="TRUSTSTORE_PASSWORD"/>
+      </Ssl>
+      <!-- end::ssl[] -->
+    </Socket>
+  </Appenders>
+  <Loggers>
+    <Root level="INFO">
+      <AppenderRef ref="SOCKET"/>
+    </Root>
+  </Loggers>
+</Configuration>
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/ssl.yaml b/src/site/antora/modules/ROOT/examples/manual/appenders/network/ssl.yaml
new file mode 100644
index 0000000..e5184dd
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/ssl.yaml
@@ -0,0 +1,37 @@
+#
+# 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.
+#
+Configuration:
+  Appenders:
+    Socket:
+      name: "SOCKET"
+      host: "localhost"
+      # tag::ssl[]
+      Ssl:
+        KeyStore:
+          location: "keystore.p12"
+          type: "PKCS12"
+          password: "${env:KEYSTORE_PASSWORD}"
+        TrustStore:
+          location: "truststore.p12"
+          type: "PKCS12"
+          passwordEnvironmentVariable: "TRUSTSTORE_PASSWORD"
+      # end::ssl[]
+  Loggers:
+    Root:
+      level: "INFO"
+      AppenderRef:
+        ref: "SOCKET"
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/syslog.json b/src/site/antora/modules/ROOT/examples/manual/appenders/network/syslog.json
new file mode 100644
index 0000000..c929043
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/syslog.json
@@ -0,0 +1,36 @@
+{
+  "Configuration": {
+    "Appenders": {
+      // tag::appender[]
+      "Syslog": {
+        "name": "SYSLOG",
+        "host": "syslog.local",
+        "port": 6514,
+        "format": "RFC5424", // <1>
+        "appName": "myApp",
+        "facility": "DAEMON",
+        "id": "Log4j",
+        "newLineEscape": "\\n",
+        "Ssl": {
+          "KeyStore": {
+            "location": "keystore.p12",
+            "password": "${env:KEYSTORE_PASSWORD}"
+          },
+          "TrustStore": {
+            "location": "truststore.p12",
+            "password": "${env:TRUSTSTORE_PASSWORD}"
+          }
+        }
+      }
+      // end::appender[]
+    },
+    "Loggers": {
+      "Root": {
+        "level": "INFO",
+        "AppenderRef": {
+          "ref": "SYSLOG"
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/syslog.properties b/src/site/antora/modules/ROOT/examples/manual/appenders/network/syslog.properties
new file mode 100644
index 0000000..7bd702e
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/syslog.properties
@@ -0,0 +1,39 @@
+#
+# 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.
+#
+##
+# tag::appender[]
+appender.0.type = Syslog
+appender.0.name = SYSLOG
+appender.0.host = syslog.local
+appender.0.port = 6514
+# <1>
+appender.0.format = RFC5424
+appender.0.appName = myApp
+appender.0.facility = DAEMON
+appender.0.id = Log4j
+appender.0.newLineEscape = \\n
+
+appender.0.ssl.type = Ssl
+appender.0.ssl.ks.type = KeyStore
+appender.0.ssl.ks.password = ${env:KEYSTORE_PASSWORD}
+
+appender.0.ssl.ts.type = TrustStore
+appender.0.ssl.ts.password = ${env:TRUSTSTORE_PASSWORD}
+# end::appender[]
+
+rootLogger.level = INFO
+rootLogger.appenderRef.0.ref = SYSLOG
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/syslog.xml b/src/site/antora/modules/ROOT/examples/manual/appenders/network/syslog.xml
new file mode 100644
index 0000000..9bfff61
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/syslog.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+<Configuration xmlns="https://logging.apache.org/xml/ns"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xsi:schemaLocation="
+                   https://logging.apache.org/xml/ns
+                   https://logging.apache.org/xml/ns/log4j-config-2.xsd">
+  <Appenders>
+    <!-- tag::appender[] -->
+    <Syslog name="SYSLOG"
+            host="syslog.local"
+            port="6514"
+            format="RFC5424"
+            appName="myApp"
+            facility="DAEMON"
+            id="Log4j"
+            newLineEscape="\n"> <!--1-->
+      <Ssl>
+        <KeyStore location="keystore.p12"
+                  password="${env:KEYSTORE_PASSWORD}"/>
+        <TrustStore location="truststore.p12"
+                    password="${env:TRUSTSTORE_PASSWORD}"/>
+      </Ssl>
+    </Syslog>
+    <!-- end::appender[] -->
+  </Appenders>
+  <Loggers>
+    <Root level="INFO">
+      <AppenderRef ref="SYSLOG"/>
+    </Root>
+  </Loggers>
+</Configuration>
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/network/syslog.yaml b/src/site/antora/modules/ROOT/examples/manual/appenders/network/syslog.yaml
new file mode 100644
index 0000000..e8949d1
--- /dev/null
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/network/syslog.yaml
@@ -0,0 +1,41 @@
+#
+# 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.
+#
+Configuration:
+  Appenders:
+    # tag::appender[]
+    Socket:
+      name: "SYSLOG"
+      host: "syslog.local"
+      port: 6514
+      format: "RFC5424" # <1>
+      appName: "myApp"
+      facility: "DAEMON"
+      id: "Log4j"
+      newLineEscape: "\\n"
+      Ssl:
+        KeyStore:
+          location: "keystore.p12"
+          password: "${env:KEYSTORE_PASSWORD}"
+        TrustStore:
+          location: "truststore.p12"
+          password: "${env:TRUSTSTORE_PASSWORD}"
+      # end::appender[]
+  Loggers:
+    Root:
+      level: "INFO"
+      AppenderRef:
+        ref: "SYSLOG"
diff --git a/src/site/antora/modules/ROOT/nav.adoc b/src/site/antora/modules/ROOT/nav.adoc
index c379039..a1f60e7 100644
--- a/src/site/antora/modules/ROOT/nav.adoc
+++ b/src/site/antora/modules/ROOT/nav.adoc
@@ -46,6 +46,7 @@
 *** xref:manual/appenders/file.adoc[]
 *** xref:manual/appenders/rolling-file.adoc[]
 *** xref:manual/appenders/database.adoc[]
+*** xref:manual/appenders/network.adoc[]
 *** xref:manual/appenders/delegating.adoc[]
 ** xref:manual/layouts.adoc[]
 *** xref:manual/json-template-layout.adoc[]
diff --git a/src/site/antora/modules/ROOT/pages/manual/appenders.adoc b/src/site/antora/modules/ROOT/pages/manual/appenders.adoc
index 18964fd..1d1e84e 100644
--- a/src/site/antora/modules/ROOT/pages/manual/appenders.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/appenders.adoc
@@ -244,6 +244,24 @@
 
 See xref:manual/appenders/database.adoc[] for details.
 
+[#network-appenders]
+=== Network appenders
+
+These appenders use simple network protocols to transmit log events to a remote host.
+The supported network protocols are:
+
+`UDP`::
+`TCP`::
+These are handled by the xref:manual/appenders/network.adoc#SocketAppender[Socket Appender].
+
+`HTTP`::
+This is handled by the xref:manual/appenders/network.adoc#HttpAppender[HTTP Appender].
+
+`SMTP`::
+This is handled by the xref:manual/appenders/network.adoc#HttpAppender[SMTP Appender].
+
+See xref:manual/appenders/network.adoc[] for details.
+
 [#delegating-appenders]
 === Delegating appenders
 
@@ -695,86 +713,6 @@
 </Configuration>
 ----
 
-[#HttpAppender]
-=== HttpAppender
-
-The HttpAppender sends log events over HTTP.
-A Layout must be provided to format the LogEvent.
-
-It will set the `Content-Type` header according to the layout.
-Additional headers can be specified with embedded Property elements.
-
-It will also wait for a response from the server, and throw an error if no 2xx response is received.
-
-Implemented with
-https://docs.oracle.com/javase/{java-target-version}/docs/api/java/net/HttpURLConnection.html[`HttpURLConnection`].
-
-.HttpAppender Parameters
-[cols="20%,20%,60%",options="header",]
-|=======================================================================
-|Parameter Name |Type |Description
-|name |String |The name of the Appender.
-
-|filter |Filter |A Filter to determine if the event should be handled by
-this Appender. More than one Filter may be used by using a
-CompositeFilter.
-
-|layout |Layout |The Layout to use to format the LogEvent.
-
-|Ssl |SslConfiguration |Contains the configuration for the KeyStore and
-TrustStore for https. Optional, uses Java runtime defaults if not
-specified. See <<SSL>>.
-
-|verifyHostname |boolean |Whether to verify server hostname against
-certificate. Only valid for https. Optional, defaults to true
-
-|url |string |The URL to use. The URL scheme must be "http" or "https".
-
-|method |string |The HTTP method to use. Optional, default is "POST".
-
-|connectTimeoutMillis |integer |The connect timeout in milliseconds.
-Optional, default is 0 (infinite timeout).
-
-|readTimeoutMillis |integer |The socket read timeout in milliseconds.
-Optional, default is 0 (infinite timeout).
-
-| [[HttpAppender-element-headers]]headers
-| Property[]
-| Additional HTTP headers to use.
-
-The values support
-xref:manual/configuration.adoc#lazy-property-substitution[runtime property substitution]
-and are evaluated in a
-xref:manual/lookups.adoc#global-context[_global context_].
-
-|ignoreExceptions |boolean |The default is `true`, causing exceptions
-encountered while appending events to be internally logged and then
-ignored. When set to `false` exceptions will be propagated to the
-caller, instead. You must set this to `false` when wrapping this
-Appender in a <<FailoverAppender>>.
-|=======================================================================
-
-Here is a sample HttpAppender configuration snippet:
-
-[source,xml]
-----
-<?xml version="1.0" encoding="UTF-8"?>
-<Configuration>
-  <!-- ... -->
-  <Appenders>
-    <Http name="Http" url="https://localhost:9200/test/log4j/">
-      <Property name="X-Java-Runtime" value="$${java:runtime}" />
-      <JsonTemplateLayout/>
-      <SSL>
-        <KeyStore   location="log4j2-keystore.jks" passwordEnvironmentVariable="KEYSTORE_PASSWORD"/>
-        <TrustStore location="truststore.jks"      passwordFile="${sys:user.home}/truststore.pwd"/>
-      </SSL>
-    </Http>
-  </Appenders>
-  <!-- ... -->
-</Configuration>
-----
-
 [[KafkaAppender]]
 === KafkaAppender
 
@@ -921,493 +859,6 @@
 By using Servlet appender you typically will not be able to differentiate log events by log level or logger name.
 ====
 
-[[SMTPAppender]]
-=== SMTPAppender
-
-Sends an e-mail when a specific logging event occurs, typically on errors or fatal errors.
-
-The number of logging events delivered in this e-mail depends on the value of the `BufferSize` option.
-The `SMTPAppender` keeps only the last `BufferSize` logging events in its cyclic buffer.
-This keeps memory requirements at a reasonable level while still delivering useful application context.
-All events in the buffer are included in the email.
-The buffer will contain the most recent events of level TRACE to WARN preceding the event that triggered the email.
-
-The default behavior is to trigger sending an email whenever an ERROR or higher severity event is logged and to format it as HTML.
-The circumstances of when the email is sent can be controlled by setting one or more filters on the Appender.
-As with other Appenders, the formatting can be controlled by specifying a Layout for the Appender.
-
-[width="100%",options="header"]
-|===
-|Parameter Name |Type |Description
-
-|name
-|String
-|The name of the Appender.
-
-|from
-|String
-|The email address of the sender.
-
-|replyTo
-|String
-|The comma-separated list of reply-to email addresses.
-
-|to
-|String
-|The comma-separated list of recipient email addresses.
-
-|cc
-|String
-|The comma-separated list of CC email addresses.
-
-|bcc
-|String
-|The comma-separated list of BCC email addresses.
-
-|subject
-|String
-|The subject of the email message.
-
-|bufferSize
-|integer
-|The maximum number of log events to be buffered for inclusion in the message. Defaults to 512.
-
-|layout
-|Layout
-|The Layout to use to format the LogEvent. If no layout is supplied xref:manual/layouts.adoc#HTMLLayout[HTML layout] will be used.
-
-|filter
-|Filter
-|A Filter to determine if the event should be handled by this Appender. More than one Filter may be used by using a CompositeFilter.
-
-|smtpDebug
-|boolean
-|When set to true turns on the session debugging on STDOUT. Defaults to false.
-
-|smtpHost
-|String
-|The SMTP hostname to send to. This parameter is required.
-
-|smtpPassword
-|String
-|The password required to authenticate against the SMTP server.
-
-|smtpPort
-|integer
-|The SMTP port to send to.
-
-|smtpProtocol
-|String
-|The SMTP transport protocol (such as "smtps", defaults to "smtp").
-
-|smtpUsername
-|String
-|The username required to authenticate against the SMTP server.
-
-|ignoreExceptions
-|boolean
-|The default is `true`, causing exceptions encountered while appending events to be internally logged and then ignored. When set to `false` exceptions will be propagated to the caller, instead. You must set this to `false` when wrapping this Appender in a <<FailoverAppender>>.
-
-|SSL
-|SslConfiguration
-|Contains the configuration for the KeyStore and TrustStore. See <<SSL>>.
-|===
-
-[source,xml]
-----
-<?xml version="1.0" encoding="UTF-8"?>
-<Configuration status="warn" name="MyApp">
-  <Appenders>
-    <SMTP name="Mail" subject="Error Log" to="errors@logging.apache.org" from="test@logging.apache.org"
-          smtpHost="localhost" smtpPort="25" bufferSize="50">
-    </SMTP>
-  </Appenders>
-  <Loggers>
-    <Root level="error">
-      <AppenderRef ref="Mail"/>
-    </Root>
-  </Loggers>
-</Configuration>
-----
-
-[#SocketAppender]
-=== SocketAppender
-
-The `SocketAppender` is an OutputStreamAppender that writes its output to a remote destination specified by a host and port.
-The data can be sent over either TCP or UDP and can be sent in any format.
-You can optionally secure communication with <<SSL>>.
-Note that the TCP and SSL variants write to the socket as a stream and do not expect a response from the target destination.
-Due to limitations in the TCP protocol that means that when the target server closes its connection some log events may continue to appear to succeed until a closed connection exception is raised, causing those events to be lost.
-If guaranteed delivery is required a protocol that requires acknowledgments must be used.
-
-.`SocketAppender` Parameters
-[cols="20%,20%,60%",options="header",]
-|=======================================================================
-|Parameter Name |Type |Description
-|name |String |The name of the Appender.
-
-|host |String |The name or address of the system that is listening for
-log events. This parameter is required.
-
-|port |integer |The port on the host that is listening for log events.
-This parameter must be specified. If the hostname resolves to multiple
-IP addresses the TCP and SSL variations will fail over to the next IP
-address when a connection is lost.
-
-|protocol |String |"TCP" (default), "SSL" or "UDP".
-
-|SSL |SslConfiguration |Contains the configuration for the KeyStore and
-TrustStore. See <<SSL>>.
-
-|filter |Filter |A Filter to determine if the event should be handled by
-this Appender. More than one Filter may be used by using a
-CompositeFilter.
-
-|immediateFail |boolean |When set to true, log events will not wait to
-try to reconnect and will fail immediately if the socket is not
-available.
-
-|immediateFlush |boolean |When set to true - the default, each write
-will be followed by a flush. This will guarantee the data is written to
-disk but could impact performance.
-
-|bufferedIO |boolean |When true - the default, events are written to a
-buffer and the data will be written to the socket when the buffer is
-full or, if immediateFlush is set when the record is written.
-
-|bufferSize |int |When bufferedIO is true, this is the buffer size, the
-default is 8192 bytes.
-
-|layout |Layout |The Layout to use to format the LogEvent. Required,
-there is no default. _New since 2.9, in previous versions
-SerializedLayout was the default._
-
-|reconnectionDelayMillis |integer |If set to a value greater than 0,
-after an error, the SocketManager will attempt to reconnect to the server
-after waiting for the specified number of milliseconds. If the reconnect
-fails then an exception will be thrown (which can be caught by the
-application if `ignoreExceptions` is set to `false`).
-
-|connectTimeoutMillis |integer |The connect timeout in milliseconds. The
-default is 0 (infinite timeout, like `Socket.connect()` methods).
-
-|ignoreExceptions |boolean |The default is `true`, causing exceptions
-encountered while appending events to be internally logged and then
-ignored. When set to `false` exceptions will be propagated to the
-caller, instead. You must set this to `false` when wrapping this
-Appender in a <<FailoverAppender>>.
-|=======================================================================
-
-This is an unsecured TCP configuration:
-
-[source,xml]
-----
-<?xml version="1.0" encoding="UTF-8"?>
-<Configuration status="warn" name="MyApp">
-  <Appenders>
-    <Socket name="socket" host="localhost" port="9500">
-      <JsonTemplateLayout/>
-    </Socket>
-  </Appenders>
-  <Loggers>
-    <Root level="error">
-      <AppenderRef ref="socket"/>
-    </Root>
-  </Loggers>
-</Configuration>
-----
-
-This is a secured <<SSL>> configuration:
-
-[source,xml]
-----
-<?xml version="1.0" encoding="UTF-8"?>
-<Configuration status="warn" name="MyApp">
-  <Appenders>
-    <Socket name="socket" host="localhost" port="9500">
-      <JsonTemplateLayout/>
-      <SSL>
-        <KeyStore location="log4j2-keystore.jks" passwordEnvironmentVariable="KEYSTORE_PASSWORD"/>
-        <TrustStore location="truststore.jks" passwordFile="${sys:user.home}/truststore.pwd"/>
-      </SSL>
-    </Socket>
-  </Appenders>
-  <Loggers>
-    <Root level="error">
-      <AppenderRef ref="socket"/>
-    </Root>
-  </Loggers>
-</Configuration>
-----
-
-[#SSL]
-==== SSL
-
-Several appenders can be configured to use either a plain network connection or a Secure Socket Layer (SSL) connection.
-This section documents the parameters available for SSL configuration.
-
-.SSL Configuration Parameters
-[cols="20%,20%,60%",options="header",]
-|=======================================================================
-|Parameter Name |Type |Description
-|protocol |String |The SSL protocol to use, `TLS` if omitted. A single value
-may enable multiple protocols, see the
-https://docs.oracle.com/en/java/javase/11/docs/specs/security/standard-names.html#sslcontext-algorithms[JVM
-documentation] for details.
-
-|KeyStore |KeyStore |Contains your private keys and certificates, and
-determines which authentication credentials to send to the remote host.
-
-|TrustStore |TrustStore |Contains the CA certificates of the remote
-counterparty. Determines whether the remote authentication credentials
-(and thus the connection) should be trusted.
-|=======================================================================
-
-[#KeyStore]
-==== KeyStore
-
-The Keystore is meant to contain your private keys and certificates, and determines which authentication credentials to send to the remote host.
-
-.KeyStore Configuration Parameters
-[cols="20%,20%,60%",options="header",]
-|=======================================================================
-|Parameter Name |Type |Description
-|location |String |Path to the keystore file.
-
-|password |char[] |Plain text password to access the keystore. Cannot be
-combined with either `passwordEnvironmentVariable` or `passwordFile`.
-
-|passwordEnvironmentVariable |String |Name of an environment variable
-that holds the password. Cannot be combined with either `password` or
-`passwordFile`.
-
-|passwordFile |String |Path to a file that holds the password. Cannot be
-combined with either `password` or `passwordEnvironmentVariable`.
-
-|type |String |Optional KeyStore type, e.g. `JKS`, `PKCS12`, `PKCS11`,
-`BKS`, `Windows-MY/Windows-ROOT`, `KeychainStore`, etc. The default is
-JKS. See also
-https://docs.oracle.com/javase/{java-target-version}/docs/technotes/guides/security/StandardNames.html#KeyStore[Standard
-types].
-
-|keyManagerFactoryAlgorithm |String |Optional KeyManagerFactory
-algorithm. The default is `SunX509`. See also
-https://docs.oracle.com/javase/{java-target-version}/docs/technotes/guides/security/StandardNames.html#KeyManagerFactory[Standard
-algorithms].
-|=======================================================================
-
-[#TrustStore]
-==== TrustStore
-
-The trust store is meant to contain the CA certificates you are willing to trust when a remote party presents its certificate.
-Determines whether the remote authentication credentials (and thus the connection) should be trusted.
-
-In some cases, they can be the same store, although it is often better practice to use distinct stores (especially when they are file-based).
-
-.TrustStore Configuration Parameters
-[cols="20%,20%,60%",options="header",]
-|=======================================================================
-|Parameter Name |Type |Description
-|location |String |Path to the keystore file.
-
-|password |char[] |Plain text password to access the keystore. Cannot be
-combined with either `passwordEnvironmentVariable` or `passwordFile`.
-
-|passwordEnvironmentVariable |String |Name of an environment variable
-that holds the password. Cannot be combined with either `password` or
-`passwordFile`.
-
-|passwordFile |String |Path to a file that holds the password. Cannot be
-combined with either `password` or `passwordEnvironmentVariable`.
-
-|type |String |Optional KeyStore type, e.g. `JKS`, `PKCS12`, `PKCS11`,
-`BKS`, `Windows-MY/Windows-ROOT`, `KeychainStore`, etc. The default is
-JKS. See also
-https://docs.oracle.com/javase/{java-target-version}/docs/technotes/guides/security/StandardNames.html#KeyStore[Standard
-types].
-
-|trustManagerFactoryAlgorithm |String |Optional TrustManagerFactory
-algorithm. The default is `SunX509`. See also
-https://docs.oracle.com/javase/{java-target-version}/docs/technotes/guides/security/StandardNames.html#TrustManagerFactory[Standard
-algorithms].
-|=======================================================================
-
-[#Example]
-==== Example
-
-[source,xml]
-----
-<SSL>
-  <KeyStore   location="log4j2-keystore.jks" passwordEnvironmentVariable="KEYSTORE_PASSWORD"/>
-  <TrustStore location="truststore.jks"      passwordFile="${sys:user.home}/truststore.pwd"/>
-</SSL>
-----
-
-[#SyslogAppender]
-=== SyslogAppender
-
-The `SyslogAppender` is a `SocketAppender` that writes its output to a remote destination specified by a host and port in a format that conforms with either the BSD Syslog format or the RFC 5424 format.
-The data can be sent over either TCP or UDP.
-
-.`SyslogAppender` Parameters
-[cols="20%,20%,60%",options="header",]
-|=======================================================================
-|Parameter Name |Type |Description
-|advertise |boolean |Indicates whether the appender should be
-advertised.
-
-|appName |String |The value to use as the APP-NAME in the RFC 5424
-syslog record.
-
-|charset |String |The character set to use when converting the Syslog
-String to a byte array. The String must be a valid
-https://docs.oracle.com/javase/{java-target-version}/docs/api/java/nio/charset/Charset.html[`Charset`].
-If not specified, the default system Charset will be used.
-
-|connectTimeoutMillis |integer |The connect timeout in milliseconds. The
-default is 0 (infinite timeout, like `Socket.connect()` methods).
-
-|enterpriseNumber |integer |The IANA enterprise number as described in
-https://datatracker.ietf.org/doc/html/rfc5424#section-7.2.2[RFC 5424]
-
-|filter |Filter |A Filter to determine if the event should be handled by
-this Appender. More than one Filter may be used by using a
-CompositeFilter.
-
-|facility |String |The facility is used to try to classify the message.
-The facility option must be set to one of "KERN", "USER", "MAIL",
-"DAEMON", "AUTH", "SYSLOG", "LPR", "NEWS", "UUCP", "CRON", "AUTHPRIV",
-"FTP", "NTP", "AUDIT", "ALERT", "CLOCK", "LOCAL0", "LOCAL1", "LOCAL2",
-"LOCAL3", "LOCAL4", "LOCAL5", "LOCAL6", or "LOCAL7". These values may be
-specified as upper or lowercase characters.
-
-|format |String |If set to "RFC5424" the data will be formatted by RFC 5424.
-Otherwise, it will be formatted as a BSD
-Syslog record. Note that although BSD Syslog records are required to be
-1024 bytes or shorter the SyslogLayout does not truncate them. The
-RFC5424Layout also does not truncate records since the receiver must
-accept records of up to 2048 bytes and may accept longer records.
-
-|host |String |The name or address of the system that is listening for
-log events. This parameter is required.
-
-|id |String |The default structured data-id to use when formatting
-according to RFC 5424. If the LogEvent contains a StructuredDataMessage
-the id from the Message will be used instead of this value.
-
-|ignoreExceptions |boolean |The default is `true`, causing exceptions
-encountered while appending events to be internally logged and then
-ignored. When set to `false` exceptions will be propagated to the
-caller, instead. You must set this to `false` when wrapping this
-Appender in a <<FailoverAppender>>.
-
-|immediateFail |boolean |When set to true, log events will not wait to
-try to reconnect and will fail immediately if the socket is not
-available.
-
-|immediateFlush |boolean |When set to true - the default, each write
-will be followed by a flush. This will guarantee the data is written to
-disk but could impact performance.
-
-|includeMDC |boolean |Indicates whether data from the ThreadContextMap
-will be included in the RFC 5424 Syslog record. Defaults to true.
-
-|Layout |Layout |A custom layout that overrides the `format` setting.
-
-|loggerFields |List of KeyValuePairs |Allows arbitrary PatternLayout
-patterns to be included as specified ThreadContext fields; no default
-specified. To use, include a `LoggerFields` nested element, containing
-one or more `KeyValuePair` elements. Each `KeyValuePair` must have a key
-attribute, which specifies the key name that will be used to identify
-the field within the MDC Structured Data element, and a value attribute,
-which specifies the PatternLayout pattern to use as the value.
-
-|mdcExcludes |String |A comma-separated list of mdc keys that should be
-excluded from the LogEvent. This is mutually exclusive with the
-mdcIncludes attribute. This attribute only applies to RFC 5424 syslog
-records.
-
-|mdcIncludes |String |A comma-separated list of mdc keys that should be
-included in the FlumeEvent. Any keys in the MDC not found in the list
-will be excluded. This option is mutually exclusive with the mdcExcludes
-attribute. This attribute only applies to RFC 5424 syslog records.
-
-|mdcRequired |String |A comma-separated list of `mdc` keys that must be
-present in the MDC. If a key is not present a LoggingException will be
-thrown. This attribute only applies to RFC 5424 syslog records.
-
-|mdcPrefix |String |A string that should be prepended to each MDC key
-to distinguish it from event attributes. The default string is
-`mdc:`. This attribute only applies to RFC 5424 syslog records.
-
-|messageId |String |The default value to be used in the MSGID field of
-RFC 5424 syslog records.
-
-|name |String |The name of the Appender.
-
-|newLine |boolean |If true, a newline will be appended to the end of the
-syslog record. The default is false.
-
-|port |integer |The port on the host that is listening for log events.
-This parameter must be specified.
-
-|protocol |String |"TCP" or "UDP". This parameter is required.
-
-|SSL |SslConfiguration |Contains the configuration for the KeyStore and
-TrustStore. See <<SSL>>.
-
-|reconnectionDelayMillis |integer |If set to a value greater than 0,
-after an error, the SocketManager will attempt to reconnect to the server
-after waiting for the specified number of milliseconds. If the reconnect
-fails then an exception will be thrown (which can be caught by the
-application if `ignoreExceptions` is set to `false`).
-|=======================================================================
-
-A sample syslogAppender configuration that is configured with two `SyslogAppender`s, one using the BSD format and one using RFC 5424.
-
-[source,xml]
-----
-<?xml version="1.0" encoding="UTF-8"?>
-<Configuration status="warn" name="MyApp">
-  <Appenders>
-    <Syslog name="bsd" host="localhost" port="514" protocol="TCP"/>
-    <Syslog name="RFC5424" format="RFC5424" host="localhost" port="8514"
-            protocol="TCP" appName="MyApp" includeMDC="true"
-            facility="LOCAL0" enterpriseNumber="18060" newLine="true"
-            messageId="Audit" id="App"/>
-  </Appenders>
-  <Loggers>
-    <Logger name="com.mycorp" level="error">
-      <AppenderRef ref="RFC5424"/>
-    </Logger>
-    <Root level="error">
-      <AppenderRef ref="bsd"/>
-    </Root>
-  </Loggers>
-</Configuration>
-----
-
-For <<SSL>> this appender writes its output to a remote destination specified by a host and port over SSL in a format that conforms with either the BSD Syslog format or the RFC 5424 format.
-
-[source,xml]
-----
-<?xml version="1.0" encoding="UTF-8"?>
-<Configuration status="warn" name="MyApp">
-  <Appenders>
-    <Syslog name="bsd" host="localhost" port="6514" protocol="SSL">
-      <SSL>
-        <KeyStore   location="log4j2-keystore.jks" passwordEnvironmentVariable="KEYSTORE_PASSWORD"/>
-        <TrustStore location="truststore.jks"      passwordFile="${sys:user.home}/truststore.pwd"/>
-      </SSL>
-    </Syslog>
-  </Appenders>
-  <Loggers>
-    <Root level="error">
-      <AppenderRef ref="bsd"/>
-    </Root>
-  </Loggers>
-</Configuration>
-----
 
 [[JeroMQAppender]]
 === ZeroMQ/JeroMQ Appender
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 a6359c6..869f899 100644
--- a/src/site/antora/modules/ROOT/pages/manual/appenders/database.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/appenders/database.adoc
@@ -16,7 +16,6 @@
 ////
 
 = Database appenders
-:open-book: &#x1F4D6;
 
 Log4j Core provides multiple appenders to send log events directly to your database.
 
@@ -329,7 +328,7 @@
 
 ====
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-cassandra_org-apache-logging-log4j-cassandra-CassandraAppender[{open-book} Plugin reference for `Cassandra`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-cassandra_org-apache-logging-log4j-cassandra-CassandraAppender[{plugin-reference-marker} Plugin reference for `Cassandra`]
 
 [#SocketAddress]
 === Socket Addresses
@@ -354,7 +353,7 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-net-SocketAddress[{open-book} Plugin reference for `SocketAddress`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-net-SocketAddress[{plugin-reference-marker} Plugin reference for `SocketAddress`]
 
 [#CassandraAppender-examples]
 === Configuration examples
@@ -504,7 +503,7 @@
 | zero or more
 | **Deprecated**: an older mechanism to define <<JdbcAppender-element-ColumnMapping,column mappings>>.
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-db-jdbc-ColumnConfig[{open-book} Plugin reference for `ColumnConfig`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-db-jdbc-ColumnConfig[{plugin-reference-marker} Plugin reference for `ColumnConfig`]
 
 | [[JdbcAppender-element-ConnectionSource]]<<ConnectionSource,`ConnectionSource`>>
 | **one**
@@ -529,7 +528,7 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-db-jdbc-JdbcAppender[{open-book} Plugin reference for `JDBC`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-db-jdbc-JdbcAppender[{plugin-reference-marker} Plugin reference for `JDBC`]
 
 [#ConnectionSource]
 === Connection Sources
@@ -539,7 +538,7 @@
 that the appender will use to get
 https://docs.oracle.com/javase/8/docs/api/java/sql/Connection.html[`Connection`] objects.
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-db-jdbc-ConnectionSource[{open-book} Plugin reference for `ConnectionSource`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-db-jdbc-ConnectionSource[{plugin-reference-marker} Plugin reference for `ConnectionSource`]
 
 The following connection sources are available out-of-the-box:
 
@@ -574,7 +573,7 @@
 **Required**
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-db-jdbc-DataSourceConnectionSource[{open-book} Plugin reference for `DataSource`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-db-jdbc-DataSourceConnectionSource[{plugin-reference-marker} Plugin reference for `DataSource`]
 
 [#FactoryMethodConnectionSource]
 ==== `ConnectionFactory`
@@ -612,7 +611,7 @@
 **Required**
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-db-jdbc-FactoryMethodConnectionSource[{open-book} Plugin reference for `ConnectionFactory`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-db-jdbc-FactoryMethodConnectionSource[{plugin-reference-marker} Plugin reference for `ConnectionFactory`]
 
 [#DriverManagerConnectionSource]
 ==== `DriverManager`
@@ -682,7 +681,7 @@
 If supplied, the <<DriverManagerConnectionSource-attr-userName,`userName`>> and <<DriverManagerConnectionSource-attr-password,`password`>> attributes will be ignored.
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-db-jdbc-DriverManagerConnectionSource[{open-book} Plugin reference for `DriverManager`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-db-jdbc-DriverManagerConnectionSource[{plugin-reference-marker} Plugin reference for `DriverManager`]
 
 [#PoolingDriverConnectionSource]
 ==== `PoolingDriver`
@@ -756,7 +755,7 @@
 See
 https://commons.apache.org/proper/commons-dbcp/configuration.html[DBCP 2 configuration] for more details.
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-jdbc-dbcp2_org-apache-logging-log4j-core-appender-db-jdbc-PoolableConnectionFactoryConfig[{open-book} Plugin reference for `PoolableConnectionFactory`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-jdbc-dbcp2_org-apache-logging-log4j-core-appender-db-jdbc-PoolableConnectionFactoryConfig[{plugin-reference-marker} Plugin reference for `PoolableConnectionFactory`]
 |===
 
 Additional runtime dependencies are required for using `PoolingDriver`:
@@ -785,7 +784,7 @@
 
 ====
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-jdbc-dbcp2_org-apache-logging-log4j-core-appender-db-jdbc-PoolingDriverConnectionSource[{open-book} Plugin reference for `PoolingDriver`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-jdbc-dbcp2_org-apache-logging-log4j-core-appender-db-jdbc-PoolingDriverConnectionSource[{plugin-reference-marker} Plugin reference for `PoolingDriver`]
 
 [#JdbcAppender-MapMessage]
 === Map Message handling
@@ -986,7 +985,7 @@
 ----
 ====
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-jpa_org-apache-logging-log4j-core-appender-db-jpa-JpaAppender[{open-book} Plugin reference for `JPA`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-jpa_org-apache-logging-log4j-core-appender-db-jpa-JpaAppender[{plugin-reference-marker} Plugin reference for `JPA`]
 
 [#JpaAppender-examples]
 === Configuration examples
@@ -1099,7 +1098,7 @@
 See <<NoSqlAppender-formatting>> for more details.
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-nosql-NoSqlAppender[{open-book} Plugin reference for `NoSQL`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-nosql-NoSqlAppender[{plugin-reference-marker} Plugin reference for `NoSQL`]
 
 [#NoSqlAppender-formatting]
 === Formatting
@@ -1273,7 +1272,7 @@
 ----
 ====
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-mongodb_org-apache-logging-log4j-mongodb-MongoDbProvider[{open-book} Plugin reference for `MongoDb`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-mongodb_org-apache-logging-log4j-mongodb-MongoDbProvider[{plugin-reference-marker} Plugin reference for `MongoDb`]
 
 [#MongoDb4Provider]
 ==== MongoDb4 Provider (deprecated)
@@ -1340,7 +1339,7 @@
 ----
 ====
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-mongodb4_org-apache-logging-log4j-mongodb4-MongoDb4Provider[{open-book} Plugin reference for `MongoDb4`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-mongodb4_org-apache-logging-log4j-mongodb4-MongoDb4Provider[{plugin-reference-marker} Plugin reference for `MongoDb4`]
 
 [#CouchDbProvider]
 === Apache CouchDB provider
@@ -1459,7 +1458,7 @@
 ----
 ====
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-couchdb_org-apache-logging-log4j-couchdb-CouchDbProvider[{open-book} Plugin reference for `CouchDb`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-couchdb_org-apache-logging-log4j-couchdb-CouchDbProvider[{plugin-reference-marker} Plugin reference for `CouchDb`]
 
 [#NoSqlAppender-examples]
 === Configuration examples
diff --git a/src/site/antora/modules/ROOT/pages/manual/appenders/delegating.adoc b/src/site/antora/modules/ROOT/pages/manual/appenders/delegating.adoc
index b04af5e..5f4032a 100644
--- a/src/site/antora/modules/ROOT/pages/manual/appenders/delegating.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/appenders/delegating.adoc
@@ -16,7 +16,6 @@
 ////
 
 = Delegating Appenders
-:open-book: &#x1F4D6;
 
 Log4j Core supplies multiple appenders that do not perform any work themselves, but modify the way other appenders work.
 The following behaviors can be modified:
@@ -168,7 +167,7 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-AsyncAppender[{open-book} Plugin reference for `Async`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-AsyncAppender[{plugin-reference-marker} Plugin reference for `Async`]
 
 As an example, you can instrument a xref:manual/appenders/file.adoc#FileAppender[`File` appender] to perform asynchronous I/O, by using the following appender configurations:
 
@@ -231,7 +230,7 @@
 
 You can specify the size of the queue using the <<AsyncAppender-attr-bufferSize,`bufferSize`>> configuration attribute.
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-async-BlockingQueueFactory[{open-book} Plugin reference for `BlockingQueueFactory`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-async-BlockingQueueFactory[{plugin-reference-marker} Plugin reference for `BlockingQueueFactory`]
 
 [#ArrayBlockingQueueFactory]
 `ArrayBlockingQueue`::
@@ -239,7 +238,7 @@
 This is the default implementation that produces
 https://docs.oracle.com/javase/{java-target-version}/docs/api/java/util/concurrent/ArrayBlockingQueue.html[`ArrayBlockingQueue`]s.
 +
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-async-ArrayBlockingQueueFactory[{open-book} Plugin reference for `ArrayBlockingQueue`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-async-ArrayBlockingQueueFactory[{plugin-reference-marker} Plugin reference for `ArrayBlockingQueue`]
 
 [#DisruptorBlockingQueueFactory]
 `DisruptorBlockingQueue`::
@@ -289,7 +288,7 @@
 ====
 =====
 +
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-async-DisruptorBlockingQueueFactory[{open-book} Plugin reference for `DisruptorBlockingQueue`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-async-DisruptorBlockingQueueFactory[{plugin-reference-marker} Plugin reference for `DisruptorBlockingQueue`]
 
 [#JCToolsBlockingQueueFactory]
 `JCToolsBlockingQueue`::
@@ -326,7 +325,7 @@
 ====
 =====
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-async-JCToolsBlockingQueueFactory[{open-book} Plugin reference for `JCToolsBlockingQueue`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-async-JCToolsBlockingQueueFactory[{plugin-reference-marker} Plugin reference for `JCToolsBlockingQueue`]
 
 [#LinkedTransferQueueFactory]
 `LinkedTransferQueue`::
@@ -335,7 +334,7 @@
 https://docs.oracle.com/javase/{java-target-version}/docs/api/java/util/concurrent/LinkedTransferQueue.html[`LinkedTransferQueue`]s.
 Note that this queue does not have a maximum capacity and ignores the <<AsyncAppender-attr-bufferSize,`bufferSize`>> attribute.
 +
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-async-LinkedTransferQueueFactory[{open-book} Plugin reference for `LinkedTransferQueue`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-async-LinkedTransferQueueFactory[{plugin-reference-marker} Plugin reference for `LinkedTransferQueue`]
 
 [#FailoverAppender]
 == `Failover` Appender
@@ -455,7 +454,7 @@
 
 <1> The primary appender must set `ignoreExceptions` to `false`.
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-FailoverAppender[{open-book} Plugin reference for `Failover`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-FailoverAppender[{plugin-reference-marker} Plugin reference for `Failover`]
 
 [#RewriteAppender]
 == `Rewrite` Appender
@@ -530,7 +529,7 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rewrite-RewriteAppender[{open-book} Plugin reference for `Rewrite`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rewrite-RewriteAppender[{plugin-reference-marker} Plugin reference for `Rewrite`]
 
 [#RewritePolicy]
 === Rewrite Policies
@@ -540,7 +539,7 @@
 interface.
 Rewrite policies allow to apply arbitrary modifications to log events.
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rewrite-RewritePolicy[{open-book} Plugin reference for `RewritePolicy`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rewrite-RewritePolicy[{plugin-reference-marker} Plugin reference for `RewritePolicy`]
 
 Log4j Core provides three rewrite policies out-of-the-box:
 
@@ -586,7 +585,7 @@
 
 |===
 +
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rewrite-MapRewritePolicy[{open-book} Plugin reference for `MapRewritePolicy`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rewrite-MapRewritePolicy[{plugin-reference-marker} Plugin reference for `MapRewritePolicy`]
 
 [#PropertiesRewritePolicy]
 `PropertiesRewritePolicy`::
@@ -616,7 +615,7 @@
 xref:manual/lookups.adoc#global-context[_global context_].
 |===
 +
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rewrite-PropertiesRewritePolicy[{open-book} Plugin reference for `PropertiesRewritePolicy`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rewrite-PropertiesRewritePolicy[{plugin-reference-marker} Plugin reference for `PropertiesRewritePolicy`]
 
 [#LoggerNameLevelRewritePolicy]
 LoggerNameLevelRewritePolicy::
@@ -658,7 +657,7 @@
 
 |===
 +
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rewrite-LoggerNameLevelRewritePolicy[{open-book} Plugin reference for `LoggerNameLevelRewritePolicy`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rewrite-LoggerNameLevelRewritePolicy[{plugin-reference-marker} Plugin reference for `LoggerNameLevelRewritePolicy`]
 
 [#RewriteAppender-examples]
 === Configuration example
@@ -803,7 +802,7 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-routing-RoutingAppender[{open-book} Plugin reference for `Routing`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-routing-RoutingAppender[{plugin-reference-marker} Plugin reference for `Routing`]
 
 [#route-selection]
 === Route selection
@@ -872,7 +871,7 @@
 |
 |===
 +
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-routing-Routes[{open-book} Plugin reference for `Routes`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-routing-Routes[{plugin-reference-marker} Plugin reference for `Routes`]
 
 [#Route]
 `Route`::
@@ -938,7 +937,7 @@
 See xref:manual/configuration.adoc#lazy-property-substitution[lazy property substitution] for more details.
 ====
 +
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-routing-Route[{open-book} Plugin reference for `Route`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-routing-Route[{plugin-reference-marker} Plugin reference for `Route`]
 
 For each log event, the appropriate route is selected as follows:
 
@@ -965,7 +964,7 @@
 link:../javadoc/log4j-core/org/apache/logging/log4j/core/appender/routing/PurgePolicy.html[`PurgePolicy`]
 interface and handles the lifecycle of automatically instantiated appenders.
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-routing-PurgePolicy[{open-book} Plugin reference for `PurgePolicy`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-routing-PurgePolicy[{plugin-reference-marker} Plugin reference for `PurgePolicy`]
 
 [NOTE]
 ====
@@ -1008,7 +1007,7 @@
 
 |===
 +
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-routing-IdlePurgePolicy[{open-book} Plugin reference for `IdlePurgePolicy`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-routing-IdlePurgePolicy[{plugin-reference-marker} Plugin reference for `IdlePurgePolicy`]
 
 [#RoutingAppender-examples]
 === Configuration examples
@@ -1199,4 +1198,4 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-ScriptAppenderSelector[{open-book} Plugin reference for `ScriptAppenderSelector`]
\ No newline at end of file
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-ScriptAppenderSelector[{plugin-reference-marker} Plugin reference for `ScriptAppenderSelector`]
\ No newline at end of file
diff --git a/src/site/antora/modules/ROOT/pages/manual/appenders/file.adoc b/src/site/antora/modules/ROOT/pages/manual/appenders/file.adoc
index e84b666..3643b80 100644
--- a/src/site/antora/modules/ROOT/pages/manual/appenders/file.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/appenders/file.adoc
@@ -17,7 +17,6 @@
 
 = File appenders
 :check-mark: &#x2713;
-:open-book: &#x1F4D6;
 :x-mark: &#x2717;
 
 Log4j Core provides multiple appenders that store log messages in a file.
@@ -218,7 +217,7 @@
 This setting can also reduce the performance of the appender.
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-FileAppender[{open-book} Plugin reference for `File`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-FileAppender[{plugin-reference-marker} Plugin reference for `File`]
 
 [#RandomAccessFileAppender]
 === `RandomAccessFile` configuration
@@ -244,7 +243,7 @@
 
 Unlike the <<FileAppender,`File` appender>>, this appender always uses an internal buffer of size <<attr-bufferSize,`bufferSize`>>.
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-RandomAccessFileAppender[{open-book} Plugin reference for `RandomAccessFile`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-RandomAccessFileAppender[{plugin-reference-marker} Plugin reference for `RandomAccessFile`]
 
 [#MemoryMappedFileAppender]
 === `MemoryMappedFile` configuration
@@ -276,4 +275,4 @@
 
 Unlike other file appenders, this appender always uses a memory mapped buffer of size <<MemoryMappedFileAppender-attr-regionLength,`regionLength`>> as its internal buffer.
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-MemoryMappedFileAppender[{open-book} Plugin reference for `MemoryMappedFile`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-MemoryMappedFileAppender[{plugin-reference-marker} Plugin reference for `MemoryMappedFile`]
diff --git a/src/site/antora/modules/ROOT/pages/manual/appenders/network.adoc b/src/site/antora/modules/ROOT/pages/manual/appenders/network.adoc
new file mode 100644
index 0000000..3aa980a
--- /dev/null
+++ b/src/site/antora/modules/ROOT/pages/manual/appenders/network.adoc
@@ -0,0 +1,981 @@
+////
+    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.
+////
+
+= Network Appenders
+
+This section guides you through xref:manual/appenders.adoc[appenders] that use simple network protocols to transmit log events to a remote host.
+
+[#common-configuration]
+== Common concerns
+
+[#tls-configuration]
+=== TLS Configuration
+
+All network appenders support TLS (formerly known as SSL) connections.
+The TLS layer can be configured:
+
+* Either globally using configuration properties.
+See xref:manual/systemproperties.adoc#properties-transport-security[Transport Security]
+for more details.
+* Or by providing a nested <<SslConfiguration,`SSL`>> Log4j component.
+
+[#SslConfiguration]
+==== `Ssl`
+
+The `Ssl` component supports the following configuration options:
+
+[#SslConfiguration-attributes]
+.`Ssl` configuration attributes
+[cols="1m,1,1,5"]
+|===
+| Attribute | Type | Default value | Description
+
+| [[SslConfiguration-attr-protocol]]protocol
+| `String`
+| `TLS`
+a|
+It specifies the
+https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext[`SSLContext` algorithm]
+that https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html[JSSE] will use.
+
+[NOTE]
+====
+This setting can only be used to reduce the highest version of TLS to be used.
+
+To disable older TLS versions, see
+https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#InstallationAndCustomization[JSSE documentation].
+====
+
+| [[SslConfiguration-attr-verifyHostName]]verifyHostName
+| `boolean`
+| `false`
+|
+If `true`, the host name in X509 certificate will be compared to the requested host name.
+In the case of a mismatch, the connection will fail.
+
+See also
+xref:manual/systemproperties.adoc#log4j2.sslVerifyHostName[`log4j2.sslVerifyHostName`].
+|===
+
+[#SslConfiguration-elements]
+.`Ssl` nested elements
+[cols="1m,1,4"]
+|===
+| Type | Multiplicity | Description
+
+| [[SslConfiguration-element-KeyStore]]<<KeyStoreConfiguration,`KeyStore`>>
+| zero or one
+|
+It specifies the
+https://docs.oracle.com/javase/8/docs/api/java/security/KeyStore.html[`KeyStore`]
+to use for TLS client authentication.
+
+| [[SslConfiguration-element-TrustStore]]<<TrustStoreConfiguration,`TrustStore`>>
+| zero or one
+|
+It specifies the trust roots to use for TLS server authentication.
+
+|===
+
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-net-ssl-SslConfiguration[{plugin-reference-marker} Plugin reference for `SSL`]
+
+[#KeyStoreConfiguration]
+==== KeyStore
+
+The `KeyStore` is meant to contain your private keys and certificates, and determines which authentication credentials to send to the remote host.
+
+[#KeyStoreConfiguration-attributes]
+.`KeyStore` configuration attributes
+[cols="1m,1,1,5"]
+|===
+| Attribute | Type | Default value | Description
+
+| [[KeyStoreConfiguration-attr-location]]location
+| https://docs.oracle.com/javase/{java-target-version}/docs/api/java/nio/file/Path.html[`Path`] or
+https://docs.oracle.com/javase/{java-target-version}/docs/api/java/net/URI.html[`URI`]
+|
+|
+The location of the private key store.
+
+See also xref:manual/systemproperties.adoc#log4j2.keyStoreLocation[`log4j2.keyStoreLocation`].
+
+| [[KeyStoreConfiguration-attr-password]]password
+| `String`
+| `null`
+|
+The password for the private key store.
+
+See also xref:manual/systemproperties.adoc#log4j2.keyStorePassword[`log4j2.keyStorePassword`].
+
+| [[KeyStoreConfiguration-attr-passwordEnvironmentVariable]]passwordEnvironmentVariable
+| `String`
+| `null`
+|
+The name of the environment variable that contains the password for the private key store.
+
+See also xref:manual/systemproperties.adoc#log4j2.keyStorePasswordEnvironmentVariable[`log4j2.keyStorePasswordEnvironmentVariable`].
+
+| [[KeyStoreConfiguration-attr-passwordFile]]passwordFile
+| https://docs.oracle.com/javase/{java-target-version}/docs/api/java/nio/file/Path.html[`Path`]
+| `null`
+|
+The name of a file that contains the password for the private key store.
+
+See also xref:manual/systemproperties.adoc#log4j2.keyStorePasswordFile[`log4j2.keyStorePasswordFile`].
+
+| [[KeyStoreConfiguration-attr-type]]type
+| https://docs.oracle.com/javase/{java-target-version}/docs/technotes/guides/security/StandardNames.html#KeyStore[`KeyStore`]
+| https://docs.oracle.com/javase/{java-target-version}/docs/api/java/security/KeyStore.html#getDefaultType--[_JVM dependent_]
+|
+The type of private key store.
+See https://docs.oracle.com/javase/{java-target-version}/docs/technotes/guides/security/StandardNames.html#KeyStore[`KeyStore` standard types].
+
+See also xref:manual/systemproperties.adoc#log4j2.keyStoreType[`log4j2.keyStoreType`].
+
+| [[KeyStoreConfiguration-attr-keyManagerFactoryAlgorithm]]keyManagerFactoryAlgorithm
+| https://docs.oracle.com/javase/{java-target-version}/docs/technotes/guides/security/StandardNames.html#KeyManagerFactory[`KeyManagerFactory`]
+|https://docs.oracle.com/javase/{java-target-version}/docs/api/javax/net/ssl/KeyManagerFactory.html#getDefaultAlgorithm--[_JVM dependent_]
+|
+Name of the https://docs.oracle.com/javase/{java-target-version}/docs/api/javax/net/ssl/KeyManagerFactory.html[`KeyManagerFactory`] implementation to use for the private key store.
+See https://docs.oracle.com/javase/{java-target-version}/docs/technotes/guides/security/StandardNames.html#KeyManagerFactory[`KeyManagerFactory` standard names].
+
+See also xref:manual/systemproperties.adoc#log4j2.keyStoreKeyManagerFactoryAlgorithm[`log4j2.keyStoreKeyManagerFactoryAlgorithm`].
+|===
+
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-net-ssl-KeyStoreConfiguration[{plugin-reference-marker} Plugin reference for `KeyStore`]
+
+[#TrustStoreConfiguration]
+==== TrustStore
+
+The trust store is meant to contain the CA certificates you are willing to trust when a remote party presents its certificate.
+It determines whether the remote authentication credentials (and thus the connection) should be trusted.
+
+[#TrustStoreConfiguration-attributes]
+.`TrustStore` configuration attributes
+[cols="1m,1,1,5"]
+|===
+| Attribute | Type | Default value | Description
+
+| [[TrustStoreConfiguration-attr-location]]location
+| https://docs.oracle.com/javase/{java-target-version}/docs/api/java/nio/file/Path.html[`Path`] or
+https://docs.oracle.com/javase/{java-target-version}/docs/api/java/net/URI.html[`URI`]
+|
+|
+The location of the trust store.
+
+See also xref:manual/systemproperties.adoc#log4j2.trustStoreLocation[`log4j2.trustStoreLocation`].
+
+| [[TrustStoreConfiguration-attr-password]]password
+| `String`
+| `null`
+|
+The password for the trust store.
+
+See also xref:manual/systemproperties.adoc#log4j2.trustStorePassword[`log4j2.trustStorePassword`].
+
+| [[TrustStoreConfiguration-attr-passwordEnvironmentVariable]]passwordEnvironmentVariable
+| `String`
+| `null`
+|
+The name of the environment variable that contains the password for the trust store.
+
+See also xref:manual/systemproperties.adoc#log4j2.trustStorePasswordEnvironmentVariable[`log4j2.trustStorePasswordEnvironmentVariable`].
+
+| [[TrustStoreConfiguration-attr-passwordFile]]passwordFile
+| https://docs.oracle.com/javase/{java-target-version}/docs/api/java/nio/file/Path.html[`Path`]
+| `null`
+|
+The name of a file that contains the password for the trust store.
+
+See also xref:manual/systemproperties.adoc#log4j2.trustStorePasswordFile[`log4j2.trustStorePasswordFile`].
+
+| [[TrustStoreConfiguration-attr-type]]type
+| https://docs.oracle.com/javase/{java-target-version}/docs/technotes/guides/security/StandardNames.html#KeyStore[`KeyStore`]
+| https://docs.oracle.com/javase/{java-target-version}/docs/api/java/security/KeyStore.html#getDefaultType--[_JVM dependent_]
+|
+The type of trust store.
+See https://docs.oracle.com/javase/{java-target-version}/docs/technotes/guides/security/StandardNames.html#KeyStore[`KeyStore` standard types].
+
+See also xref:manual/systemproperties.adoc#log4j2.trustStoreType[`log4j2.trustStoreType`].
+
+| [[TrustStoreConfiguration-attr-keyManagerFactoryAlgorithm]]keyManagerFactoryAlgorithm
+| https://docs.oracle.com/javase/{java-target-version}/docs/technotes/guides/security/StandardNames.html#KeyManagerFactory[`KeyManagerFactory`]
+|https://docs.oracle.com/javase/{java-target-version}/docs/api/javax/net/ssl/KeyManagerFactory.html#getDefaultAlgorithm--[_JVM dependent_]
+|
+Name of the https://docs.oracle.com/javase/{java-target-version}/docs/api/javax/net/ssl/KeyManagerFactory.html[`KeyManagerFactory`] implementation to use for the trust store.
+See https://docs.oracle.com/javase/{java-target-version}/docs/technotes/guides/security/StandardNames.html#KeyManagerFactory[`KeyManagerFactory` standard names].
+
+See also xref:manual/systemproperties.adoc#log4j2.trustStoreKeyManagerFactoryAlgorithm[`log4j2.trustStoreKeyManagerFactoryAlgorithm`].
+|===
+
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-net-ssl-TrustStoreConfiguration[{plugin-reference-marker} Plugin reference for `TrustStore`]
+
+[#SslConfiguration-examples]
+==== TLS configuration example
+
+This is an example of TLS configuration:
+
+[tabs]
+====
+XML::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/ssl.xml[`log4j2.xml`]
+[source,xml,indent=0]
+----
+include::example$manual/appenders/network/ssl.xml[tag=ssl]
+----
+
+JSON::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/ssl.json[`log4j2.json`]
+[source,json,indent=0]
+----
+include::example$manual/appenders/network/ssl.json[tag=ssl]
+----
+
+YAML::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/ssl.yaml[`log4j2.yaml`]
+[source,yaml,indent=0]
+----
+include::example$manual/appenders/network/ssl.yaml[tag=ssl]
+----
+
+Properties::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/ssl.properties[`log4j2.properties`]
+[source,properties,indent=0]
+----
+include::example$manual/appenders/network/ssl.properties[tag=ssl]
+----
+====
+
+[#HttpAppender]
+== HTTP Appender
+
+The HTTP Appender sends log events over HTTP, by wrapping them in an HTTP request.
+The `Content-Type` HTTP header is set based on the
+link:../javadoc/log4j-core/org/apache/logging/log4j/core/Layout.html#getContentType()[`getContentType()`]
+method of the
+<<HttpAppender-element-Layout,nested layout>>.
+Additional headers can be configured using the nested
+<<HttpAppender-element-Property,`Property` elements>>.
+
+If the appender receives a response with status code different from `2xx`, an exception is thrown.
+See also <<HttpAppender-attr-ignoreExceptions,`ignoreExceptions`>> configuration attribute.
+
+[NOTE]
+====
+The implementation uses
+https://docs.oracle.com/javase/{java-target-version}/docs/api/java/net/HttpURLConnection.html[`HttpURLConnection`]
+under the hood.
+====
+
+[#HttpAppender-attributes]
+.HTTP Appender configuration attributes
+[cols="1m,1,1,5"]
+|===
+| Attribute | Type | Default value | Description
+
+4+h| Required
+
+| [[HttpAppender-attr-name]]name
+| `String`
+|
+| The name of the appender.
+
+| [[HttpAppender-attr-url]]url
+| https://docs.oracle.com/javase/8/docs/api/java/net/URL.html[`URL`]
+|
+| The URL of the HTTP server.
+Only the `http` and `https` schemas are supported.
+
+4+h| Optional
+
+| [[HttpAppender-attr-connectTimeoutMillis]]connectTimeoutMillis
+| `int`
+| `0`
+|
+The connect timeout in milliseconds.
+If `0` the timeout is infinite.
+
+| [[HttpAppender-attr-readTimeoutMillis]]readTimeoutMillis
+| `int`
+| `0`
+|The socket read timeout in milliseconds.
+If `0` the timeout is infinite.
+
+| [[HttpAppender-attr-ignoreExceptions]]ignoreExceptions
+| `boolean`
+| `true`
+| If `false`, logging exception will be forwarded to the caller of the logging statement.
+Otherwise, they will be ignored.
+
+Logging exceptions are always also logged to xref:manual/status-logger.adoc[]
+
+| [[HttpAppender-attr-method]]method
+| `String`
+| `POST`
+| The HTTP method to use.
+
+| [[HttpAppender-attr-verifyHostName]]verifyHostName
+| `boolean`
+| `true`
+|
+If `true`, the host name in X509 certificate will be compared to the requested host name.
+In the case of a mismatch, the connection will fail.
+
+|===
+
+[#HttpAppender-elements]
+.HTTP Appender nested elements
+[cols="1m,1,4"]
+|===
+| Type | Multiplicity | Description
+
+| [[HttpAppender-element-Filter]]xref:manual/filters.adoc[`Filter`]
+| zero or one
+|
+Allows filtering log events just before they are formatted and sent.
+
+See also xref:manual/filters.adoc#appender-stage[appender filtering stage].
+
+| [[HttpAppender-element-Layout]]xref:manual/layouts.adoc[`Layout`]
+| **one**
+|
+Formats log events.
+The choice of the layout is also responsible for the `Content-Type` header of HTTP requests.
+
+See xref:manual/layouts.adoc[] for more information.
+
+| [[HttpAppender-element-Property]]xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-config-Property[`Property`]
+| zero or more
+| Additional HTTP headers to use.
+
+The values support
+xref:manual/configuration.adoc#lazy-property-substitution[runtime property substitution]
+and are evaluated in a
+xref:manual/lookups.adoc#global-context[_global context_].
+
+| [[HttpAppender-element-SslConfiguration]]<<SslConfiguration,`SSL`>>
+| zero or one
+|
+It specifies the TLS parameters to use.
+See <<tls-configuration>> for more details.
+
+|===
+
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-HttpAppender[{plugin-reference-marker} Plugin reference for `HTTP`]
+
+[#HttpAppender-examples]
+=== Configuration examples
+
+Here is a sample Http Appender configuration snippet:
+
+[tabs]
+====
+XML::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/http.xml[`log4j2.xml`]
+[source,xml,indent=0]
+----
+include::example$manual/appenders/network/http.xml[tag=appender]
+----
+
+JSON::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/http.json[`log4j2.json`]
+[source,json,indent=0]
+----
+include::example$manual/appenders/network/http.json[tag=appender]
+----
+
+YAML::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/http.yaml[`log4j2.yaml`]
+[source,yaml,indent=0]
+----
+include::example$manual/appenders/network/http.yaml[tag=appender]
+----
+
+Properties::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/http.properties[`log4j2.properties`]
+[source,properties,indent=0]
+----
+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]]
+== SMTP Appender
+
+The SMTP writes log events to an e-mail service using
+https://jakarta.ee/specifications/mail/1.6/[Jakarta Mail 1.6 or higher].
+
+[IMPORTANT]
+====
+Unlike what happens with
+xref:manual/filters.adoc#appender-stage[most appenders], the SMTP does **not** discard log events that are denied by the
+<<SmtpAppender-element-Filter,`Filter`>> element.
+
+All the log events received by the appender are added to a cyclic log event buffer as context.
+If the filter accepts a message, an e-mail is sent.
+====
+
+[#SmtpAppender-attributes]
+.SMTP Appender configuration attributes
+[cols="1m,1,2,5"]
+|===
+| Attribute | Type | Default value | Description
+
+4+h| Required
+
+| [[SmtpAppender-attr-name]]name
+| `String`
+|
+| The name of the appender.
+
+4+h| Optional
+
+| [[SmtpAppender-attr-bufferSize]]bufferSize
+| `int`
+| `512`
+|
+The maximum number of log events to be buffered for inclusion in a single message.
+
+| [[SmtpAppender-attr-ignoreExceptions]]ignoreExceptions
+| `boolean`
+| `true`
+| If `false`, logging exception will be forwarded to the caller of the logging statement.
+Otherwise, they will be ignored.
+
+Logging exceptions are always also logged to xref:manual/status-logger.adoc[]
+
+| [[SmtpAppender-attr-smtpDebug]]smtpDebug
+| `boolean`
+| `false`
+|
+When set to `true` turns on the session debugging.
+In the reference implementation of Jakarta Mail
+(https://projects.eclipse.org/projects/ee4j.angus[Eclipse Angus])
+this will cause log messages to be printed on `System.out`.
+
+See the javadoc of
+https://jakarta.ee/specifications/mail/2.1/apidocs/jakarta.mail/jakarta/mail/session#setDebug(boolean)[`Session.setDebug()`]
+for more details.
+
+| [[SmtpAppender-attr-]]smtpProtocol
+| `String`
+| `smtp`
+a|
+The Jakarta Mail transport protocol.
+Most implementations provide:
+
+`smtp`::
+SMTP
+
+`smtps`::
+SMTP over TLS
+
+| [[SmtpAppender-attr-smtpHost]]smtpHost
+| `String`
+| `localhost`
+|
+The SMTP hostname to send to.
+
+| [[SmtpAppender-attr-Port]]smtpPort
+| `int`
+a|
+`25`:: for `smtp`
+`465`:: for `smtps`
+|The SMTP port to send to.
+
+| [[SmtpAppender-attr-smtpUsername]]smtpUsername
+| `String`
+|
+|
+The username used to authenticate against the SMTP server.
+
+| [[SmtpAppender-attr-smtpPassword]]smtpPassword
+| `String`
+|
+|The password used to authenticate against the SMTP server.
+
+
+4+h| https://datatracker.ietf.org/doc/html/rfc5322[RFC 822 message] fields
+
+| [[SmtpAppender-attr-from]]from
+| https://jakarta.ee/specifications/mail/2.1/apidocs/jakarta.mail/jakarta/mail/internet/internetaddress[`InternetAddress[\]`]
+|
+|
+A list of
+https://datatracker.ietf.org/doc/html/rfc2822#section-3.6.2[sender e-mail addresses].
+
+See
+https://datatracker.ietf.org/doc/html/rfc2822#section-3.4[RFC2822 Address Specification]
+for the format.
+
+| [[SmtpAppender-attr-replyTo]]replyTo
+| https://jakarta.ee/specifications/mail/2.1/apidocs/jakarta.mail/jakarta/mail/internet/internetaddress[`InternetAddress[\]`]
+|
+|
+A list of
+https://datatracker.ietf.org/doc/html/rfc2822#section-3.6.2[reply-to e-mail addresses].
+
+See
+https://datatracker.ietf.org/doc/html/rfc2822#section-3.4[RFC2822 Address Specification]
+for the format.
+
+| [[SmtpAppender-attr-to]]to
+| https://jakarta.ee/specifications/mail/2.1/apidocs/jakarta.mail/jakarta/mail/internet/internetaddress[`InternetAddress[\]`]
+|
+|
+A list of
+https://datatracker.ietf.org/doc/html/rfc2822#section-3.6.3[recipient e-mail addresses].
+
+See
+https://datatracker.ietf.org/doc/html/rfc2822#section-3.4[RFC2822 Address Specification]
+for the format.
+
+**Required**, if <<SmtpAppender-attr-cc,`cc`>> and <<SmtpAppender-attr-bcc,`bcc`>> are empty.
+
+| [[SmtpAppender-attr-cc]]cc
+| https://jakarta.ee/specifications/mail/2.1/apidocs/jakarta.mail/jakarta/mail/internet/internetaddress[`InternetAddress[\]`]
+|
+|
+A list of
+https://datatracker.ietf.org/doc/html/rfc2822#section-3.6.3[CC e-mail addresses].
+
+See
+https://datatracker.ietf.org/doc/html/rfc2822#section-3.4[RFC2822 Address Specification]
+for the format.
+
+**Required**, if <<SmtpAppender-attr-to,`to`>> and <<SmtpAppender-attr-bcc,`bcc`>> are empty.
+
+| [[SmtpAppender-attr-bcc]]bcc
+| https://jakarta.ee/specifications/mail/2.1/apidocs/jakarta.mail/jakarta/mail/internet/internetaddress[`InternetAddress[\]`]
+|
+|
+A list of
+https://datatracker.ietf.org/doc/html/rfc2822#section-3.6.3[BCC e-mail addresses].
+
+See
+https://datatracker.ietf.org/doc/html/rfc2822#section-3.4[RFC2822 Address Specification]
+for the format.
+
+**Required**, if <<SmtpAppender-attr-to,`to`>> and <<SmtpAppender-attr-cc,`cc`>> are empty.
+
+| [[SmtpAppender-attr-subject]]subject
+| `String`
+|
+|
+It specifies the subject field of the RFC 822 message.
+
+This field can contain
+xref:manual/pattern-layout.adoc#converters[pattern converters].
+|===
+
+[#SmtpAppender-elements]
+.HTTP Appender nested elements
+[cols="1m,1,4"]
+|===
+| Type | Multiplicity | Description
+
+| [[SmtpAppender-element-Filter]]xref:manual/filters.adoc[`Filter`]
+| zero or one
+a|
+A filter that decides which events trigger an e-mail and which events are buffered for context.
+
+If absent, a
+xref:manual/filters.adoc#ThresholdFilter[`ThresholdFilter`]
+with default parameters will be used.
+
+| [[SmtpAppender-element-Layout]]xref:manual/layouts.adoc[`Layout`]
+| **one**
+|
+Formats log events.
+The choice of the layout is also responsible for the `Content-Type` header of e-mail message.
+
+See xref:manual/layouts.adoc[] for more information.
+
+| [[SmtpAppender-element-SslConfiguration]]<<SslConfiguration,`SSL`>>
+| zero or one
+|
+It specifies the TLS parameters to use.
+See <<tls-configuration>> for more details.
+
+|===
+
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-SmtpAppender[{plugin-reference-marker} Plugin reference for `SMTP`]
+
+Additional runtime dependencies are required to use the SMTP appender:
+
+[tabs]
+====
+Maven::
++
+[source,xml]
+----
+<!-- We assume you use `log4j-bom` for dependency management -->
+<dependency>
+  <groupId>org.apache.logging.log4j</groupId>
+  <artifactId>log4j-jakarta-smtp</artifactId>
+  <scope>runtime</scope>
+</dependency>
+----
+
+Gradle::
++
+[source,groovy]
+----
+// We assume you use `log4j-bom` for dependency management
+runtimeOnly 'org.apache.logging.log4j:log4j-jakarta-smtp'
+----
+====
+
+.Click here if you are you using Jakarta EE 8 or any version of Java EE?
+[%collapsible]
+=====
+Jakarta EE 8 and all Java EE applications servers use the legacy `javax` package prefix instead of `jakarta`.
+If you are using those application servers, you should replace the dependencies above with:
+
+[tabs]
+====
+Maven::
++
+[source,xml,subs="+attributes"]
+----
+<dependency>
+  <groupId>com.sun.mail</groupId>
+  <artifactId>javax.mail</artifactId>
+  <version>{javax-mail-version}</version>
+</dependency>
+----
+
+Gradle::
++
+[source,groovy,subs="+attributes"]
+----
+runtimeOnly 'com.sun.mail:javax.mail:{javax-mail-version}'
+----
+====
+=====
+
+[#SmtpAppender-examples]
+=== Configuration examples
+
+Here is an example of SMTP Appender configuration:
+
+[tabs]
+====
+XML::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/smtp.xml[`log4j2.xml`]
+[source,xml,indent=0]
+----
+include::example$manual/appenders/network/smtp.xml[tag=appender]
+----
+
+JSON::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/smtp.json[`log4j2.json`]
+[source,json,indent=0]
+----
+include::example$manual/appenders/network/smtp.json[tag=appender]
+----
+
+YAML::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/smtp.yaml[`log4j2.yaml`]
+[source,yaml,indent=0]
+----
+include::example$manual/appenders/network/smtp.yaml[tag=appender]
+----
+
+Properties::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/smtp.properties[`log4j2.properties`]
+[source,properties,indent=0]
+----
+include::example$manual/appenders/network/smtp.properties[tag=appender]
+----
+====
+
+<1> The `subject` attribute can use xref:manual/pattern-layout.adoc#converters[pattern converters].
+<2> An e-mail will be sent for each `AUDIT` log event.
+Additional log events will be kept for context.
+
+[#SocketAppender]
+== Socket Appender
+
+The Socket Appender that writes its output to a remote destination using TCP or UDP sockets.
+You can optionally secure communication with <<tls-configuration,TLS>>.
+
+[NOTE]
+====
+The TCP and TLS variants write to the socket as a stream and do not expect a response from the target destination.
+When the target server closes its connection, some log events may continue to appear as delivered until a
+https://docs.oracle.com/javase/8/docs/api/java/net/SocketException.html[`SocketException`]
+is raised, causing those events to be lost.
+
+If guaranteed delivery is required, a protocol that requires acknowledgments must be used.
+====
+
+[#SocketAppender-attributes]
+.Socket Appender configuration attributes
+[cols="1m,1,2,5"]
+|===
+| Attribute | Type | Default value | Description
+
+4+h| Required
+
+| [[SocketAppender-attr-host]]host
+| `String`
+|
+|
+The name or address of the system that is listening for log events.
+
+| [[SocketAppender-attr-name]]name
+| `String`
+|
+| The name of the appender.
+
+4+h| Optional
+
+| [[SocketAppender-attr-bufferedIo]]bufferedIo
+| `boolean`
+| `true`
+|
+If set to `true`, Log4j Core will format each log event in an internal buffer, before sending it to the underlying resource.
+
+See xref:manual/appenders.adoc#buffering[Buffering] for more details.
+
+| [[SocketAppender-attr-bufferSize]]bufferSize
+| `int`
+| xref:manual/systemproperties.adoc#log4j2.encoderByteBufferSize[`8192`]
+a|
+The size of the
+https://docs.oracle.com/javase/{java-target-version}/docs/api/java/nio/ByteBuffer.html[`ByteBuffer`]
+internally used by the appender.
+
+See xref:manual/appenders.adoc#buffering[Buffering] for more details.
+
+| [[SocketAppender-attr-ignoreExceptions]]ignoreExceptions
+| `boolean`
+| `true`
+| If `false`, logging exception will be forwarded to the caller of the logging statement.
+Otherwise, they will be ignored.
+
+Logging exceptions are always also logged to xref:manual/status-logger.adoc[]
+
+| immediateFail
+| boolean
+| `true`
+|
+When set to `true`, log events will not wait to try to reconnect and will fail immediately if the socket is not
+available.
+
+| [[SocketAppender-attr-immediateFlush]]immediateFlush
+| `boolean`
+| `true`
+|
+If set to `true`, the appender will flush its internal buffer after each event.
+
+See xref:manual/appenders.adoc#buffering[Buffering] for more details.
+
+| [[SocketAppender-attr-port]]port
+| `int`
+a|
+`4560`:: for `TCP`
+`6514`:: for `SSL`
+_no default_:: for `UDP`
+|
+The port on the host that is listening for log events.
+
+**Required**
+
+| [[SocketAppender-attr-protocol]]protocol
+| _enumeration_
+| `TCP`
+|
+The network protocol to use: `UDP`, `TCP` or `SSL`.
+
+| [[SocketAppender-attr-connectTimeoutMillis]]connectTimeoutMillis
+| `int`
+| `0`
+|
+The connect timeout in milliseconds.
+If `0` the timeout is infinite.
+
+| [[SocketAppender-attr-readTimeoutMillis]]readTimeoutMillis
+| `int`
+| `0`
+|The socket read timeout in milliseconds.
+If `0` the timeout is infinite.
+|===
+
+[#SocketAppender-elements]
+.Socket Appender nested elements
+[cols="1m,1,4"]
+|===
+| Type | Multiplicity | Description
+
+| [[SocketAppender-element-Filter]]xref:manual/filters.adoc[`Filter`]
+| zero or one
+|
+Allows filtering log events just before they are formatted and sent.
+
+See also xref:manual/filters.adoc#appender-stage[appender filtering stage].
+
+| [[SocketAppender-element-Layout]]xref:manual/layouts.adoc[`Layout`]
+| zero or one
+|
+Formats log events.
+
+See xref:manual/layouts.adoc[] for more information.
+
+| [[SocketAppender-element-SslConfiguration]]<<SslConfiguration,`SSL`>>
+| zero or one
+|
+It specifies the TLS parameters to use.
+See <<tls-configuration>> for more details.
+
+|===
+
+[#SocketAppender-examples]
+=== Configuration examples
+
+The following example appends log events to a Syslog server using a TLS connection and the RFC5424 log event format:
+
+[tabs]
+====
+XML::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/socket.xml[`log4j2.xml`]
+[source,xml,indent=0]
+----
+include::example$manual/appenders/network/socket.xml[tag=appender]
+----
+
+JSON::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/socket.json[`log4j2.json`]
+[source,json,indent=0]
+----
+include::example$manual/appenders/network/socket.json[tag=appender]
+----
+
+YAML::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/socket.yaml[`log4j2.yaml`]
+[source,yaml,indent=0]
+----
+include::example$manual/appenders/network/socket.yaml[tag=appender]
+----
+
+Properties::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/socket.properties[`log4j2.properties`]
+[source,properties,indent=0]
+----
+include::example$manual/appenders/network/socket.properties[tag=appender]
+----
+====
+
+[#SyslogAppender]
+== Syslog Appender
+
+The Syslog Appender is a utility Log4j plugin to combine a <<SocketAppender>> with either a
+xref:manual/layouts.adoc#SyslogLayout[Syslog Layout]
+or
+xref:manual/layouts.adoc#RFC5424Layout[Rfc5424 Layout]
+to provide a functionality similar to the
+https://man7.org/linux/man-pages/man3/syslog.3.html[UNIX `syslog` function].
+
+It has a single configuration property to select the layout to use:
+
+[#SyslogAppender-attributes]
+.Configuration attributes specific to Syslog Appender
+[cols="1m,1,2,5"]
+|===
+| Attribute | Type | Default value | Description
+
+| [[SyslogAppender-attr-format]]format
+| _enumeration_
+| `BSD`
+a|
+It determines the layout to use:
+
+`BSD`::
+Uses the legacy xref:manual/layouts.adoc#SyslogLayout[Syslog Layout].
+
+`RFC5242`::
+Uses the xref:manual/layouts.adoc#RFC5424Layout[Rfc5424 Layout].
+
+|===
+
+All the remaining configuration attributes and nested elements are inherited from
+<<SocketAppender,Socket Appender>> and the chosen layout.
+
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-SyslogAppender[{plugin-reference-marker} Plugin reference for `Syslog`]
+
+[#SyslogAppender-examples]
+=== Configuration examples
+
+The following configuration snippet creates the same appender as the <<SocketAppender-examples,Socket Appender example above>>:
+
+[tabs]
+====
+XML::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/syslog.xml[`log4j2.xml`]
+[source,xml,indent=0]
+----
+include::example$manual/appenders/network/syslog.xml[tag=appender]
+----
+
+JSON::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/syslog.json[`log4j2.json`]
+[source,json,indent=0]
+----
+include::example$manual/appenders/network/syslog.json[tag=appender]
+----
+
+YAML::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/syslog.yaml[`log4j2.yaml`]
+[source,yaml,indent=0]
+----
+include::example$manual/appenders/network/syslog.yaml[tag=appender]
+----
+
+Properties::
++
+.Snippet from an example {antora-examples-url}/manual/appenders/network/syslog.properties[`log4j2.properties`]
+[source,properties,indent=0]
+----
+include::example$manual/appenders/network/syslog.properties[tag=appender]
+----
+====
+
+<1> By setting the `format` attribute to `RFC5424`, the xref:manual/layouts.adoc#RFC5424Layout[`Rfc5424Layout`] will be used.
+The remaining attributes are either attributes of <<SocketAppender,Socket Appender>> or the `Rfc5424Layout`.
diff --git a/src/site/antora/modules/ROOT/pages/manual/appenders/rolling-file.adoc b/src/site/antora/modules/ROOT/pages/manual/appenders/rolling-file.adoc
index c975633..226d5be 100644
--- a/src/site/antora/modules/ROOT/pages/manual/appenders/rolling-file.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/appenders/rolling-file.adoc
@@ -17,7 +17,6 @@
 
 = Rolling file appenders
 :check-mark: &#x2713;
-:open-book: &#x1F4D6;
 :x-mark: &#x2717;
 
 Log4j Core provides multiple appenders that allow to archive the current log file and truncate it.
@@ -283,7 +282,7 @@
 This setting can also reduce the performance of the appender.
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-RollingFileAppender[{open-book} Plugin reference for `RollingFile`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-RollingFileAppender[{plugin-reference-marker} Plugin reference for `RollingFile`]
 
 [#RollingRandomAccessFileAppender]
 === `RollingRandomAccessFile` configuration
@@ -307,7 +306,7 @@
 The log file cannot be opened by multiple applications at the same time.
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-RollingRandomAccessFileAppender[{open-book} Plugin reference for `RollingRandomAccessFile`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-RollingRandomAccessFileAppender[{plugin-reference-marker} Plugin reference for `RollingRandomAccessFile`]
 
 [#TriggeringPolicy]
 == Triggering Policies
@@ -316,7 +315,7 @@
 link:../../javadoc/log4j-core/org/apache/logging/log4j/core/appender/rolling/TriggeringPolicy.html[`TriggeringPolicy`]
 interface and are used to decide when is it time to rollover the current log file.
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-TriggeringPolicy[{open-book} Plugin reference for `TriggeringPolicy`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-TriggeringPolicy[{plugin-reference-marker} Plugin reference for `TriggeringPolicy`]
 
 [#TriggeringPolicy-common]
 === Common concerns
@@ -374,7 +373,7 @@
 https://cloud.google.com/appengine[Google App Engine], the `OnStartupTriggeringPolicy` will use the timestamp, when its class was loaded instead.
 ====
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-OnStartupTriggeringPolicy[{open-book} Plugin reference for `OnStartupTriggeringPolicy`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-OnStartupTriggeringPolicy[{plugin-reference-marker} Plugin reference for `OnStartupTriggeringPolicy`]
 
 [#CronTriggeringPolicy]
 === `CronTriggeringPolicy`
@@ -428,7 +427,7 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-CronTriggeringPolicy[{open-book} Plugin reference for `CronTriggeringPolicy`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-CronTriggeringPolicy[{plugin-reference-marker} Plugin reference for `CronTriggeringPolicy`]
 
 [#SizeBasedTriggeringPolicy]
 === `SizeBasedTriggeringPolicy`
@@ -475,7 +474,7 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-SizeBasedTriggeringPolicy[{open-book} Plugin reference for `SizeBasedTriggeringPolicy`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-SizeBasedTriggeringPolicy[{plugin-reference-marker} Plugin reference for `SizeBasedTriggeringPolicy`]
 
 [#TimeBasedTriggeringPolicy]
 === `TimeBasedTriggeringPolicy`
@@ -540,7 +539,7 @@
 See xref:manual/pattern-layout.adoc#converter-date[`date` converter syntax] for more details.
 ====
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-TimeBasedTriggeringPolicy[{open-book} Plugin reference for `TimeBasedTriggeringPolicy`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-TimeBasedTriggeringPolicy[{plugin-reference-marker} Plugin reference for `TimeBasedTriggeringPolicy`]
 
 [#Policies]
 === Multiple policies
@@ -595,7 +594,7 @@
 ----
 ====
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-CompositeTriggeringPolicy[{open-book} Plugin reference for `Policies`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-CompositeTriggeringPolicy[{plugin-reference-marker} Plugin reference for `Policies`]
 
 [#RolloverStrategy]
 == Rollover strategies
@@ -716,7 +715,7 @@
 This attribute is **ignored** if <<DefaultRolloverStrategy-attr-fileIndex,`fileIndex`>> is set to `nomax`.
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-DefaultRolloverStrategy[{open-book} Plugin reference for `DefaultRolloverStrategy`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-DefaultRolloverStrategy[{plugin-reference-marker} Plugin reference for `DefaultRolloverStrategy`]
 
 [#DirectWriteRolloverStrategy]
 === `DirectWriteRolloverStrategy` configuration
@@ -740,7 +739,7 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-DirectWriteRolloverStrategy[{open-book} Plugin reference for `DirectWriteRolloverStrategy`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-DirectWriteRolloverStrategy[{plugin-reference-marker} Plugin reference for `DirectWriteRolloverStrategy`]
 
 [#RolloverStrategy-index]
 === Incrementing file indexes
@@ -1011,7 +1010,7 @@
 * the <<DeleteAction>> to delete old log files after a rollover,
 * the <<PosixViewAttributeAction>> to change the POSIX permissions of old log files.
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-AbstractPathAction[{open-book} Plugin reference for `AbstractPathAction`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-AbstractPathAction[{plugin-reference-marker} Plugin reference for `AbstractPathAction`]
 
 [#AbstractPathAction-config]
 === Common action configuration
@@ -1120,7 +1119,7 @@
 | If present, all the <<DeleteAction-element-PathCondition,nested ``PathCondition``s>> are ignored and the provided script is executed to select the file to delete.
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-DeleteAction[{open-book} Plugin reference for `Delete`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-DeleteAction[{plugin-reference-marker} Plugin reference for `Delete`]
 
 [#PosixViewAttributeAction]
 === `PosixViewAttribute` action
@@ -1191,7 +1190,7 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-PosixViewAttributeAction[{open-book} Plugin reference for `PosixViewAttribute`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-PosixViewAttributeAction[{plugin-reference-marker} Plugin reference for `PosixViewAttribute`]
 
 [#PathCondition]
 === Path conditions
@@ -1240,7 +1239,7 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-IfAccumulatedFileSize[{open-book} Plugin reference for `IfAccumulatedFileSize`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-IfAccumulatedFileSize[{plugin-reference-marker} Plugin reference for `IfAccumulatedFileSize`]
 
 [#IfAccumulatedFileCount]
 ==== `IfAccumulatedFileCount`
@@ -1281,7 +1280,7 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-IfAccumulatedFileCount[{open-book} Plugin reference for `IfAccumulatedFileCount`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-IfAccumulatedFileCount[{plugin-reference-marker} Plugin reference for `IfAccumulatedFileCount`]
 
 [#IfFileName]
 ==== `IfFileName`
@@ -1331,7 +1330,7 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-IfFileName[{open-book} Plugin reference for `IfFileName`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-IfFileName[{plugin-reference-marker} Plugin reference for `IfFileName`]
 
 [#IfLastModified]
 ==== `IfLastModified`
@@ -1364,7 +1363,7 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-IfLastModified[{open-book} Plugin reference for `IfLastModified`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-IfLastModified[{plugin-reference-marker} Plugin reference for `IfLastModified`]
 
 [#IfNot]
 ==== `IfNot`
@@ -1382,7 +1381,7 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-IfNot[{open-book} Plugin reference for `IfNot`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-IfNot[{plugin-reference-marker} Plugin reference for `IfNot`]
 
 [#IfAll]
 ==== `IfAll`
@@ -1400,7 +1399,7 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-IfAll[{open-book} Plugin reference for `IfAll`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-IfAll[{plugin-reference-marker} Plugin reference for `IfAll`]
 
 [#IfAny]
 ==== `IfAny`
@@ -1416,7 +1415,7 @@
 
 |===
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-IfAny[{open-book} Plugin reference for `IfAny`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-IfAny[{plugin-reference-marker} Plugin reference for `IfAny`]
 
 [#ScriptCondition]
 === `ScriptCondition`
@@ -1487,7 +1486,7 @@
 
 For an example of `ScriptCondition` usage, see the <<using-script-condition>> example below.
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-ScriptCondition[{open-book} Plugin reference for `ScriptCondition`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-appender-rolling-action-ScriptCondition[{plugin-reference-marker} Plugin reference for `ScriptCondition`]
 
 [#recipes]
 == Configuration recipes
diff --git a/src/site/antora/modules/ROOT/pages/manual/layouts.adoc b/src/site/antora/modules/ROOT/pages/manual/layouts.adoc
index 6b8e2ff..3f84346 100644
--- a/src/site/antora/modules/ROOT/pages/manual/layouts.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/layouts.adoc
@@ -16,7 +16,6 @@
 ////
 
 = Layouts
-:open-book: &#x1F4D6;
 
 An xref:manual/appenders.adoc[appender] uses a *layout* to encode a link:../javadoc/log4j-core/org/apache/logging/log4j/core/LogEvent.html[`LogEvent`] into a form that meets the needs of whatever will be consuming the log event.
 This page will try to answer following questions:
@@ -66,7 +65,7 @@
 
 Following sections explain all predefined layouts in detail.
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-Layout[{open-book} Plugin reference for all `Layout` implementations]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-Layout[{plugin-reference-marker} Plugin reference for all `Layout` implementations]
 
 [#csv-layouts]
 === [[CSVLayouts]] CSV Layouts
@@ -79,7 +78,7 @@
 `CsvParameterLayout` encodes *only* the parameters of the message of a log event.
 Generated CSV records will be composed of fields denoting the message parameters.
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-CsvParameterLayout[{open-book} Plugin reference for `CsvParameterLayout`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-CsvParameterLayout[{plugin-reference-marker} Plugin reference for `CsvParameterLayout`]
 
 .Click here for examples
 [%collapsible]
@@ -130,7 +129,7 @@
 . Thread context map
 . Thread context stack
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-CsvLogEventLayout[{open-book} Plugin reference for `CsvLogEventLayout`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-CsvLogEventLayout[{plugin-reference-marker} Plugin reference for `CsvLogEventLayout`]
 
 .Click here for examples
 [%collapsible]
@@ -239,7 +238,7 @@
 Unless compression is needed, we advise you to use xref:manual/json-template-layout.adoc[JSON Template Layout] instead, which provides GELF Layout support out of the box and offers more capabilities and performance.
 ====
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-GelfLayout[{open-book} Plugin reference for `GelfLayout`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-GelfLayout[{plugin-reference-marker} Plugin reference for `GelfLayout`]
 
 GELF Layout is configured with the following parameters:
 
@@ -397,7 +396,7 @@
 
 `HtmlLayout` generates an HTML page, and adds each log event to a row in a table.
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-HtmlLayout[{open-book} Plugin reference for `HtmlLayout`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-HtmlLayout[{plugin-reference-marker} Plugin reference for `HtmlLayout`]
 
 It is configured with the following parameters:
 
@@ -455,7 +454,7 @@
 It is succeeded by <<JSONTemplateLayout>> providing more capabilities and efficiency.
 ====
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-JsonLayout[{open-book} Plugin reference for `JsonLayout`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-JsonLayout[{plugin-reference-marker} Plugin reference for `JsonLayout`]
 
 .Click for an example output
 [%collapsible]
@@ -717,7 +716,7 @@
 It is currently only useful with the
 xref:manual/appenders/database.adoc#JdbcAppender[JDBC Appender].
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-MessageLayout[{open-book} Plugin reference for `MessageLayout`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-MessageLayout[{plugin-reference-marker} Plugin reference for `MessageLayout`]
 
 [id=pattern-layout]
 === [[PatternLayout]] Pattern Layout
@@ -760,7 +759,7 @@
 RFC 5424 obsoletes RFC 3164, implemented by <<SyslogLayout>>.
 ====
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-Rfc5424Layout[{open-book} Plugin reference for `Rfc5424Layout`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-Rfc5424Layout[{plugin-reference-marker} Plugin reference for `Rfc5424Layout`]
 
 RFC 5424 Layout is configured with the following parameters:
 
@@ -873,7 +872,7 @@
 *Serialized Layout users are strongly advised to migrate to another layout!*
 ====
 
- xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-SerializedLayout[{open-book} Plugin reference for `SerializedLayout`]
+ xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-SerializedLayout[{plugin-reference-marker} Plugin reference for `SerializedLayout`]
 
 [#SyslogLayout]
 === Syslog Layout
@@ -886,7 +885,7 @@
 RFC 3164, implemented by Syslog Layout, is obsoleted by RFC 5424, implemented by <<RFC5424Layout>>.
 ====
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-SyslogLayout[{open-book} Plugin reference for `SyslogLayout`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-SyslogLayout[{plugin-reference-marker} Plugin reference for `SyslogLayout`]
 
 Syslog Layout is configured with the following parameters:
 
@@ -926,7 +925,7 @@
 XML Layout users are strongly advised to migrate to another layout!
 ====
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-XmlLayout[{open-book} Plugin reference for `XmlLayout`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-XmlLayout[{plugin-reference-marker} Plugin reference for `XmlLayout`]
 
 .Click for an example output
 [%collapsible]
@@ -1025,7 +1024,7 @@
 *We strongly advise existing YAML Layout users to migrate to <<JSONTemplateLayout>>* providing more capabilities and efficiency.
 ====
 
-xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-YamlLayout[{open-book} Plugin reference for `YamlLayout`]
+xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-layout-YamlLayout[{plugin-reference-marker} Plugin reference for `YamlLayout`]
 
 .Click for an example output
 [%collapsible]