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

(logging-log4j2) 02/02: Convert `*.properties` examples to Log4j 3 format

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

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

commit db46797a79246683122719be26b13f8148b069fc
Author: Piotr P. Karwasz <pi...@karwasz.org>
AuthorDate: Tue May 21 21:29:13 2024 +0200

    Convert `*.properties` examples to Log4j 3 format
---
 .../manual/configuration/arbiters-select.json      |  1 +
 .../configuration/arbiters-select.properties       | 18 ++---
 .../examples/manual/configuration/arbiters.json    |  1 +
 .../manual/configuration/arbiters.properties       | 21 +++--
 .../configuration/logger-properties.properties     | 19 ++---
 .../manual/configuration/loggers.properties        | 22 +++---
 .../manual/configuration/main-elements.properties  | 35 ++++-----
 .../configuration/properties-example.properties    |  7 +-
 .../configuration/properties-recursion.properties  | 11 ++-
 .../manual/configuration/properties.properties     |  7 +-
 .../manual/configuration/routing.properties        | 23 ++----
 .../manual/configuration/scripts.properties        | 61 +++++++--------
 .../modules/ROOT/pages/manual/appenders.adoc       |  2 +-
 .../modules/ROOT/pages/manual/configuration.adoc   | 91 ++++------------------
 .../antora/modules/ROOT/pages/manual/lookups.adoc  |  4 +-
 .../antora/modules/ROOT/pages/manual/scripts.adoc  | 10 +--
 16 files changed, 130 insertions(+), 203 deletions(-)

diff --git a/src/site/antora/modules/ROOT/examples/manual/configuration/arbiters-select.json b/src/site/antora/modules/ROOT/examples/manual/configuration/arbiters-select.json
index a8a4eb0b9b..6bacde85d0 100644
--- a/src/site/antora/modules/ROOT/examples/manual/configuration/arbiters-select.json
+++ b/src/site/antora/modules/ROOT/examples/manual/configuration/arbiters-select.json
@@ -3,6 +3,7 @@
     "Appenders": {
       "File": {
         "name": "MAIN",
+        "fileName": "logs/app.log",
         // tag::select[]
         "Select": {
           "SystemPropertyArbiter": { // <1>
diff --git a/src/site/antora/modules/ROOT/examples/manual/configuration/arbiters-select.properties b/src/site/antora/modules/ROOT/examples/manual/configuration/arbiters-select.properties
index 8fa74a1d8e..26753ee875 100644
--- a/src/site/antora/modules/ROOT/examples/manual/configuration/arbiters-select.properties
+++ b/src/site/antora/modules/ROOT/examples/manual/configuration/arbiters-select.properties
@@ -14,19 +14,17 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-appender.0.type = File
-appender.0.name = MAIN
+Appenders.File.name = MAIN
+Appenders.File.fileName = logs/app.log
 # tag::select[]
 appender.0.select.type = Select
 
-appender.0.select.0.type = SystemPropertyArbiter # <1>
-appender.0.select.0.propertyName = env
-appender.0.select.0.propertyValue = dev
-appender.0.select.0.layout.type = PatternLayout
+Appenders.File.Select.SystemPropertyArbiter.propertyName = env # <1>
+Appenders.File.Select.SystemPropertyArbiter.propertyValue = dev
+Appenders.File.Select.SystemPropertyArbiter.layout.type = PatternLayout
 
-appender.0.select.1.type = DefaultArbiter # <2>
-appender.0.select.1.layout.type = JsonTemplateLayout
+Appenders.File.Select.DefaultArbiter.layout.type = JsonTemplateLayout # <2>
 # end::select[]
 
-rootLogger.level = INFO
-rootLogger.appenderRef.0.ref = MAIN
+Loggers.Root.level = INFO
+Loggers.Root.AppenderRef.ref = MAIN
diff --git a/src/site/antora/modules/ROOT/examples/manual/configuration/arbiters.json b/src/site/antora/modules/ROOT/examples/manual/configuration/arbiters.json
index d732aaaa7a..7e21caf6eb 100644
--- a/src/site/antora/modules/ROOT/examples/manual/configuration/arbiters.json
+++ b/src/site/antora/modules/ROOT/examples/manual/configuration/arbiters.json
@@ -3,6 +3,7 @@
     "Appenders": {
       "File": {
         "name": "MAIN",
+        "fileName": "logs/app.log",
         "SystemPropertyArbiter": [
           // <1>
           {
diff --git a/src/site/antora/modules/ROOT/examples/manual/configuration/arbiters.properties b/src/site/antora/modules/ROOT/examples/manual/configuration/arbiters.properties
index 72e81e778c..052c6b2845 100644
--- a/src/site/antora/modules/ROOT/examples/manual/configuration/arbiters.properties
+++ b/src/site/antora/modules/ROOT/examples/manual/configuration/arbiters.properties
@@ -14,19 +14,16 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-appender.0.type = File
-appender.0.name = MAIN
+Appenders.File.name = MAIN
 
-appender.0.arbiter[0].type = SystemPropertyArbiter # <1>
-appender.0.arbiter[0].propertyName = env
-appender.0.arbiter[0].propertyValue = dev
-appender.0.arbiter[0].layout.type = PatternLayout
-appender.0.arbiter[0].layout.pattern = %d [%t] %p %c - %m%n
+Appenders.File.SystemPropertyArbiter[1].propertyName = env # <1>
+Appenders.File.SystemPropertyArbiter[1].propertyValue = dev
+Appenders.File.SystemPropertyArbiter[1].PatternLayout.pattern = %d [%t] %p %c - %m%n
 
 appender.0.arbiter[1].type = SystemPropertyArbiter # <2>
-appender.0.arbiter[1].propertyName = env
-appender.0.arbiter[1].propertyValue = prod
-appender.0.arbiter[1].layout.type = JsonTemplateLayout
+Appenders.File.SystemPropertyArbiter[2].propertyName = env
+Appenders.File.SystemPropertyArbiter[2].propertyValue = prod
+Appenders.File.SystemPropertyArbiter[2].layout.type = JsonTemplateLayout
 
-rootLogger.level = INFO
-rootLogger.appenderRef.0.ref = MAIN
+Loggers.Root.level = INFO
+Loggers.Root.AppenderRef.ref = MAIN
diff --git a/src/site/antora/modules/ROOT/examples/manual/configuration/logger-properties.properties b/src/site/antora/modules/ROOT/examples/manual/configuration/logger-properties.properties
index 5533e1140c..44611b3549 100644
--- a/src/site/antora/modules/ROOT/examples/manual/configuration/logger-properties.properties
+++ b/src/site/antora/modules/ROOT/examples/manual/configuration/logger-properties.properties
@@ -16,17 +16,14 @@
 #
 ##
 # tag::loggers[]
-rootLogger.property.type = Property
-rootLogger.name = client.address
-rootLogger.value = $${web:request.remoteAddress}
+Loggers.Root.Property.name = client.address
+Loggers.Root.Property.value = $${web:request.remoteAddress}
 
-logger.0.name = org.hibernate
-logger.0.property.type = Property
-logger.0.property.name = subsystem
-logger.0.property.value = Database
+Loggers.Logger[1].name = org.hibernate
+Loggers.Logger[1].Property.name = subsystem
+Loggers.Logger[1].Property.value = Database
 
-logger.1.name = io.netty
-logger.1.property.type = Property
-logger.1.property.name = subsystem
-logger.1.property.value = Networking
+Loggers.Logger[2].name = io.netty
+Loggers.Logger[2].Property.name = subsystem
+Loggers.Logger[2].Property.value = Networking
 # end::loggers[]
diff --git a/src/site/antora/modules/ROOT/examples/manual/configuration/loggers.properties b/src/site/antora/modules/ROOT/examples/manual/configuration/loggers.properties
index 01b945ebac..f8b23cef49 100644
--- a/src/site/antora/modules/ROOT/examples/manual/configuration/loggers.properties
+++ b/src/site/antora/modules/ROOT/examples/manual/configuration/loggers.properties
@@ -16,18 +16,18 @@
 #
 ##
 # tag::loggers[]
-rootLogger.level = INFO # <1>
-rootLogger.appenderRef.0.ref = APPENDER1
+Loggers.Root.level = INFO # <1>
+Loggers.Root.AppenderRef.ref = APPENDER1
 
-logger.0.name = org.example.no_additivity # <2>
-logger.0.additivity = false
-logger.0.appenderRef.0.ref = APPENDER2
+Loggers.Logger[1].name = org.example.no_additivity # <2>
+Loggers.Logger[1].additivity = false
+Loggers.Logger[1].AppenderRef.ref = APPENDER2
 
-logger.1.name = org.example.no_location # <3>
-logger.1.includeLocation = false
-logger.1.appenderRef.0.ref = APPENDER3
+Loggers.Logger[2].name = org.example.no_location # <3>
+Loggers.Logger[2].includeLocation = false
+Loggers.Logger[2].AppenderRef.ref = APPENDER3
 
-logger.2.name = org.example.level # <4>
-logger.2.level = DEBUG
-logger.2.appenderRef.0.ref = APPENDER4
+Loggers.Logger[3].name = org.example.level # <4>
+Loggers.Logger[3].level = DEBUG
+Loggers.Logger[3].AppenderRef.ref = APPENDER4
 # end::loggers[]
diff --git a/src/site/antora/modules/ROOT/examples/manual/configuration/main-elements.properties b/src/site/antora/modules/ROOT/examples/manual/configuration/main-elements.properties
index 2b98fbe657..abb3ec92f6 100644
--- a/src/site/antora/modules/ROOT/examples/manual/configuration/main-elements.properties
+++ b/src/site/antora/modules/ROOT/examples/manual/configuration/main-elements.properties
@@ -14,27 +14,22 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-appender.0.type = Console # <1>
-appender.0.name = CONSOLE
-appender.0.layout.type = PatternLayout
-appender.0.layout.pattern = %p - %m%n
+Appenders.Console.name = CONSOLE # <1>
+Appenders.Console.PatternLayout.pattern = %p - %m%n
 
-appender.1.type = File # <2>
-appender.1.name = MAIN
-appender.1.fileName = logs/main.log
-appender.1.layout.type = JsonTemplateLayout
+Appenders.File[1].name = MAIN # <2>
+Appenders.File[1].fileName = logs/main.log
+Appenders.File[1].layout.type = JsonTemplateLayout
 
-appender.2.type = File # <3>
-appender.2.name = DEBUG_LOG
-appender.2.fileName = logs/debug.log
-appender.2.layout.type = PatternLayout
-appender.2.layout.pattern = %d [%t] %p %c - %m%n
+Appenders.File[2].name = DEBUG_LOG # <3>
+Appenders.File[2].fileName = logs/debug.log
+Appenders.File[2].PatternLayout.pattern = %d [%t] %p %c - %m%n
 
-rootLogger.level = INFO # <4>
-rootLogger.appenderRef.0.ref = CONSOLE
-rootLogger.appenderRef.0.level = WARN
-rootLogger.appenderRef.1.ref = MAIN
+Loggers.Root.level = INFO # <4>
+Loggers.Root.AppenderRef[1].ref = CONSOLE
+Loggers.Root.AppenderRef[1].level = WARN
+Loggers.Root.AppenderRef[2].ref = MAIN
 
-logger.0.name = org.example # <5>
-logger.0.level = DEBUG
-logger.0.appenderRef.0.ref = DEBUG_LOG
+Loggers.Logger.name = org.example # <5>
+Loggers.Logger.level = DEBUG
+Loggers.Logger.AppenderRef.ref = DEBUG_LOG
diff --git a/src/site/antora/modules/ROOT/examples/manual/configuration/properties-example.properties b/src/site/antora/modules/ROOT/examples/manual/configuration/properties-example.properties
index 099524cc74..4c611996b4 100644
--- a/src/site/antora/modules/ROOT/examples/manual/configuration/properties-example.properties
+++ b/src/site/antora/modules/ROOT/examples/manual/configuration/properties-example.properties
@@ -14,5 +14,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-property.FOO = foo
-property.BAR = bar
+Properties.Property[1].name = FOO
+Properties.Property[1].value = foo
+
+Properties.Property[2].name = BAR
+Properties.Property[2].value = bar
diff --git a/src/site/antora/modules/ROOT/examples/manual/configuration/properties-recursion.properties b/src/site/antora/modules/ROOT/examples/manual/configuration/properties-recursion.properties
index 0c54dd40cb..63e533aa57 100644
--- a/src/site/antora/modules/ROOT/examples/manual/configuration/properties-recursion.properties
+++ b/src/site/antora/modules/ROOT/examples/manual/configuration/properties-recursion.properties
@@ -14,6 +14,11 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-property.logging.file = ${logging.dir}/app.log
-property.logging.dir = ${env:APP_BASE}/logs
-property.APP_BASE = .
+Properties.Property[1].name = logging.file
+Properties.Property[1].value = ${logging.dir}/app.log
+
+Properties.Property[2].name = logging.dir
+Properties.Property[2].value = ${env:APP_BASE}/logs
+
+Properties.Property[3].name = APP_BASE
+Properties.Property[3].value = .
diff --git a/src/site/antora/modules/ROOT/examples/manual/configuration/properties.properties b/src/site/antora/modules/ROOT/examples/manual/configuration/properties.properties
index 77a67b7823..c365cbfef8 100644
--- a/src/site/antora/modules/ROOT/examples/manual/configuration/properties.properties
+++ b/src/site/antora/modules/ROOT/examples/manual/configuration/properties.properties
@@ -14,6 +14,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-property.log.dir = /var/log
-property.log.file = ${log.dir}/app.log
+Properties.Property[1].name = log.dir
+Properties.Property[1].value = /var/log
+
+Properties.Property[2].name = /var/log
+Properties.Property[2].value = ${log.dir}/app.log
 # ...
diff --git a/src/site/antora/modules/ROOT/examples/manual/configuration/routing.properties b/src/site/antora/modules/ROOT/examples/manual/configuration/routing.properties
index 912e5be0c9..298531fc47 100644
--- a/src/site/antora/modules/ROOT/examples/manual/configuration/routing.properties
+++ b/src/site/antora/modules/ROOT/examples/manual/configuration/routing.properties
@@ -16,22 +16,15 @@
 #
 ##
 # tag::appender[]
-appender.0.type = Routing
-appender.0.name = ROUTING
+Appenders.Routing.name = ROUTING
 
-appender.0.routes.type = Routes
-appender.0.routes.pattern = $${sd:type} # <1>
+Appenders.Routing.Routes.pattern = $${sd:type} # <1>
 
-appender.0.routes.route.type = Route
-
-appender.0.routes.route.file.type = File
-appender.0.routes.route.file.name = ROUTING-${sd:type} # <2>
-appender.0.routes.route.file.fileName = logs/${sd:type}.log # <2>
-appender.0.routes.route.file.layout.type = JsonTemplateLayout
-appender.0.routes.route.file.layout.field.type = EventTemplateAdditionalField
-appender.0.routes.route.file.layout.field.name = type
-appender.0.routes.route.file.layout.field.value = ${sd:type} # <2>
+Appenders.Routing.Routes.Route.File.name = ROUTING-$sd:type} # <2>
+Appenders.Routing.Routes.Route.File.fileName = logs/${sd:type}.log # <2>
+Appenders.Routing.Routes.Route.File.JsonTemplateLayout.EventTemplateAdditionalField.name = type
+Appenders.Routing.Routes.Route.File.JsonTemplateLayout.EventTemplateAdditionalField.value = ${sd:type} # <2>
 # end::appender[]
 
-rootLogger.level = INFO
-rootLogger.appenderRef.0.ref = ROUTING
+Loggers.Root.level = INFO
+Loggers.Root.AppenderRef.ref = ROUTING
diff --git a/src/site/antora/modules/ROOT/examples/manual/configuration/scripts.properties b/src/site/antora/modules/ROOT/examples/manual/configuration/scripts.properties
index 8c41afe7d5..92339c54df 100644
--- a/src/site/antora/modules/ROOT/examples/manual/configuration/scripts.properties
+++ b/src/site/antora/modules/ROOT/examples/manual/configuration/scripts.properties
@@ -14,47 +14,39 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-appender.0.type = Console
-appender.0.name = STDOUT
-appender.0.layout.type = PatternLayout
+Appenders.Console.name = STDOUT
 
-appender.0.layout.selector = ScriptPatternSelector
-appender.0.layout.selector.defaultPattern = %d %p %m%n
-appender.0.layout.selector.scriptRef.type = ScriptRef
-appender.0.layout.selector.scriptRef.ref = SELECTOR_SCRIPT
-appender.0.layout.selector.match[0].type = PatternMatch
-appender.0.layout.selector.match[0].key = NoLocation
-appender.0.layout.selector.match[0].pattern = [%-5level] %c{1.} %msg%n
-appender.0.layout.selector.match[1].type = PatternMatch
-appender.0.layout.selector.match[1].key = Flow
-appender.0.layout.selector.match[1].pattern = [%-5level] %c{1.} ====== %C{1.}.%M:%L %msg ======%n
+Appenders.Console.PatternLayout.ScriptPatternSelector.defaultPattern = %d %p %m%n
+Appenders.Console.PatternLayout.ScriptPatternSelector.ScriptRef.ref = SELECTOR_SCRIPT
+Appenders.Console.PatternLayout.ScriptPatternSelector.PatternMatch[1].key = NoLocation
+Appenders.Console.PatternLayout.ScriptPatternSelector.PatternMatch[1].pattern = [%-5level] %c{1.} %msg%n
+Appenders.Console.PatternLayout.ScriptPatternSelector.PatternMatch[2].key = Flow
+Appenders.Console.PatternLayout.ScriptPatternSelector.PatternMatch[2].pattern = \
+  [%-5level] %c{1.} ====== %C{1.}.%M:%L %msg ======%n
 
-logger.0.name = EventLogger
-logger.0.filter.0.type = ScriptFilter
-logger.0.filter.0.onMatch = ACCEPT
-logger.0.filter.0.onMismatch = DENY
-logger.0.filter.0.script.type = Script
-logger.0.filter.0.script.name = EVENT_LOGGER_FILTER
-logger.0.filter.0.script.language = groovy
-logger.0.filter.0.script.scriptText = if (logEvent.getMarker() != null && logEvent.getMarker().isInstanceOf("FLOW"))) {\
+Loggers.Logger.name = EventLogger
+Loggers.Logger.ScriptFilter.onMatch = ACCEPT
+Loggers.Logger.ScriptFilter.onMismatch = DENY
+Loggers.Logger.ScriptFilter.Script.name = EVENT_LOGGER_FILTER
+Loggers.Logger.ScriptFilter.Script.language = groovy
+Loggers.Logger.ScriptFilter.Script.scriptText = \
+  if (logEvent.getMarker() != null && logEvent.getMarker().isInstanceOf("FLOW"))) {\
     return true;\
   } else if (logEvent.getContextMap().containsKey("UserId")) {\
     return true;\
   }\
   return false;
 
-rootLogger.level = INFO
-rootLogger.filter.0.type = ScriptFilter
-rootLogger.filter.0.onMatch = ACCEPT
-rootLogger.filter.0.onMismatch = DENY
-rootLogger.filter.0.scriptRef.type = ScriptRef
-rootLogger.filter.0.scriptRef.ref = ROOT_FILTER
-rootLogger.appenderRef.0.ref = STDOUT
+Loggers.Root.level = INFO
+Loggers.Root.ScriptFilter.onMatch = ACCEPT
+Loggers.Root.ScriptFilter.onMismatch = DENY
+Loggers.Root.ScriptFilter.ScriptRef.ref = ROOT_FILTER
+Loggers.Root.AppenderRef.ref = STDOUT
 
-script.0.type = Script
-script.0.name = SELECTOR_SCRIPT
-script.0.language = javascript
-script.0.scriptText = var result;\
+Scripts.Script.name = SELECTOR_SCRIPT
+Scripts.Script.language = javascript
+Scripts.Script.scriptText = \
+  var result;\
   if (logEvent.getLoggerName().equals("JavascriptNoLocation")) {\
     result = "NoLocation";\
   } else if (logEvent.getMarker() != null && logEvent.getMarker().isInstanceOf("FLOW")) {\
@@ -62,6 +54,5 @@ script.0.scriptText = var result;\
   }\
   result;
 
-script.1.type = ScriptFile
-script.1.name = ROOT_FILTER
-script.1.path = scripts/filter.groovy
+Scripts.ScriptFile.name = ROOT_FILTER
+Scripts.ScriptFile.path = scripts/filter.groovy
diff --git a/src/site/antora/modules/ROOT/pages/manual/appenders.adoc b/src/site/antora/modules/ROOT/pages/manual/appenders.adoc
index 24e1318010..3552b70f77 100644
--- a/src/site/antora/modules/ROOT/pages/manual/appenders.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/appenders.adoc
@@ -1766,7 +1766,7 @@ with `com.foo.bar`.
 </Configuration>
 ----
 
-[#RollingFileAppender]
+[#rollingfileappender]
 == RollingFileAppender
 
 The RollingFileAppender is an OutputStreamAppender that writes to the
diff --git a/src/site/antora/modules/ROOT/pages/manual/configuration.adoc b/src/site/antora/modules/ROOT/pages/manual/configuration.adoc
index 5fa49fba25..345dccea1c 100644
--- a/src/site/antora/modules/ROOT/pages/manual/configuration.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/configuration.adoc
@@ -224,27 +224,28 @@ File:
 
 Java properties::
 +
-In the Java properties configuration format:
+WARNING: The Java properties configuration format used in Log4j 2 and Log4j 3 are not compatible.
++
+The Java properties configuration format used in Log4j 3 is based on
+https://github.com/FasterXML/jackson-dataformats-text/blob/master/properties/README.md[`jackson-dataformat-properties`],
+
 +
 [id=configuration-with-properties]
 ====
-* Properties that share a common prefix (e.g., `appender.foo`) are mapped to a subtree of the configuration node tree.
-* Configuration attributes are specified by appending the property's name (e.g., `name`) to the prefix of the node, separated by a dot (e.g., `appender.foo.name`).
-* The **plugin type** must be specified as an attribute named `type`.
-* Nested elements are created by:
-** Choosing an arbitrary id for the nested component (e.g., `<0>`)
-** Appending the id to the prefix of the parent component (e.g., `appender.foo.<0>`)
-** Specifying the type of the nested plugin by assigning a `type` attribute (e.g., `appender.foo.<0>.type`)
+* Each configuration node and its children are represented by a dot `.` separated prefix (e.g. `Appenders.Foo`),
+* Configuration attributes are specified by appending the property's name (e.g., `name`) to the prefix of the node, separated by a dot (e.g., `Appenders.Foo.name`).
+* The **plugin type** if the last component of a node prefix (e.g. `Foo` for `Appenders.Foo`),
+* If a node has multiple children of the same type, they can be specified by appending an index marker `[<n>]` to their prefix, where `<n>` is an integer starting at `1`.
+For example `Appenders.Foo[1]` and `Appender.Foo[2]`,
+* The plugin type can also be specified by using **any** prefix and setting the `type` attribute of a node.
+If the configuration node has no other attributes this is the only way to define the node.
 ====
 +
-[NOTE]
-====
-Nested components use the assigned ID for sorting purposes only.
-====
+See
+https://github.com/FasterXML/jackson-dataformats-text/blob/master/properties/README.md[`jackson-dataformat-properties` documentation]
+for more details.
 =====
 
-See also <<format-specific-notes>> for exceptions to the rules above.
-
 [id=main-configuration-elements]
 === Main configuration elements
 
@@ -1082,13 +1083,13 @@ include::example$manual/configuration/arbiters-select.properties[tag=select]
 === Composite Configuration
 
 Log4j allows multiple configuration files to be used at the same time by specifying them as a list of comma-separated file paths or URLs in the
-xref:manual/systemproperties.adoc#log4j2.configurationFile[log4j2.configurationFile]
+xref:manual/systemproperties.adoc#log4j.configuration.location[log4j.configuration.location]
 configuration property.
 
 These configuration files are merged into a single configuration file using
 link:../javadoc/log4j-core/org/apache/logging/log4j/core/config/composite/MergeStrategy.html[MergeStrategy]
 service that can be customized using the
-xref:manual/systemproperties.adoc#log4j2.mergeStrategy[log4j2.mergeStrategy]
+xref:manual/systemproperties.adoc#log4j.configuration.mergeStrategy[log4j.configuration.mergeStrategy]
 configuration property.
 
 The default merge strategy will merge the files using the following rules:
@@ -1179,61 +1180,3 @@ include::example$manual/configuration/xinclude-appenders.xml[lines=1;18..-1]
 include::example$manual/configuration/xinclude-loggers.xml[lines=1;18..-1]
 ----
 
-[id=java-properties-features]
-==== Java properties format
-
-[TIP]
-====
-The Java properties format is not well suited to represent hierarchical structures.
-
-Switch to XML to avoid additional dependencies, or choose YAML for a format similar to Java properties but less verbose.
-====
-
-The Java properties configuration format is the most verbose of the available formats.
-To make it more usable, a series of exceptions to the rules in <<configuration-with-properties,Java properties syntax>> have been introduced over time:
-
-. The following direct children of `Configuration` have predefined prefixes and do not require to specify a `type` attribute:
-* The xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-config-AppendersPlugin[Appender container] has a predefined `appender` prefix.
-* The xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-config-CustomLevels[Custom levels container] has a predefined `customLevel` prefix.
-* The xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-config-LoggersPlugin[Loggers container] has a predefined `logger` prefix.
-* The xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-config-PropertiesPlugin[Properties container] has a predefined `property` prefix.
-* The xref:plugin-reference.adoc#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-config-ScriptsPlugin[Scripts container] has a predefined `script` prefix.
-
-. Properties that start with `property` are used for <<property-substitution>>.
-Their syntax is:
-+
-[source,properties]
-----
-property.<key> = <value>
-----
-
-. Properties that start with `customLevel` are used to define custom levels.
-Their syntax is:
-+
-[source,properties]
-----
-customLevel.<name> = <intValue>
-----
-+
-where `<name>` is the name of the level and `<intValue>` its numerical value.
-
-. The root logger can be configured using properties that start with `rootLogger`.
-
-. A shorthand notation is available that allows users to write:
-+
-[source,properties]
-----
-rootLogger = INFO, APPENDER
-----
-+
-instead of:
-+
-[source,properties]
-----
-rootLogger.level = INFO
-rootLogger.appenderRef.0.ref = APPENDER
-----
-
-. All the keys of the form `logger.<name>.appenderRef.<id>`, where `<name>` and `<id>` are arbitrary, are considered appender references.
-
-. To add a filter to a component use a `filter.<id>` prefix instead of just `<id>`.
diff --git a/src/site/antora/modules/ROOT/pages/manual/lookups.adoc b/src/site/antora/modules/ROOT/pages/manual/lookups.adoc
index 6eb03e8b08..d97cd87e64 100644
--- a/src/site/antora/modules/ROOT/pages/manual/lookups.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/lookups.adoc
@@ -106,7 +106,7 @@ Log4j Docker provides access to the following container attributes:
 
 This Lookup is subject to the requirements listed at xref:log4j-docker.adoc[Log4j Docker Support]
 
-[#EnvironmentLookup]
+[#environment-lookup]
 == Environment Lookup
 
 The EnvironmentLookup allows systems to configure environment variables,
@@ -567,7 +567,7 @@ while "type" would have to be an item in the Map in a MapMessage.
 </Routing>
 ----
 
-[#SystemPropertiesLookup]
+[#system-properties-lookup]
 == System Properties Lookup
 
 As it is quite common to define values inside and outside the
diff --git a/src/site/antora/modules/ROOT/pages/manual/scripts.adoc b/src/site/antora/modules/ROOT/pages/manual/scripts.adoc
index df835933db..d705da347b 100644
--- a/src/site/antora/modules/ROOT/pages/manual/scripts.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/scripts.adoc
@@ -24,7 +24,7 @@ https://docs.oracle.com/javase/6/docs/technotes/guides/scripting/[JSR
 [WARNING]
 ====
 In order to enable a scripting language, its name must be included in the
-xref:manual/systemproperties.adoc#log4j2.scriptEnableLanguages[log4j2.scriptEnableLanguages]
+xref:manual/systemproperties.adoc#log4j.script.enableLanguages[log4j.script.enableLanguages]
 configuration property.
 ====
 
@@ -80,28 +80,28 @@ XML::
 +
 [source,xml]
 ----
-include::example$configuration/scripts.xml[lines=1;18..-1]
+include::example$manual/configuration/scripts.xml[lines=1;18..-1]
 ----
 
 JSON::
 +
 [source,json]
 ----
-include::example$configuration/scripts.json[]
+include::example$manual/configuration/scripts.json[]
 ----
 
 YAML::
 +
 [source,yaml]
 ----
-include::example$configuration/scripts.yaml[lines=17..-1]
+include::example$manual/configuration/scripts.yaml[lines=17..-1]
 ----
 
 Java properties::
 +
 [source,properties]
 ----
-include::example$configuration/scripts.properties[lines=17..-1]
+include::example$manual/configuration/scripts.properties[lines=17..-1]
 ----
 ====