This is an automated email from the ASF dual-hosted git repository.
vy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/main by this push:
new 9dbfc5b100 Add auto-generated plugin reference to the `3.x` site
(#2407)
9dbfc5b100 is described below
commit 9dbfc5b1004bb506ae4b2bd7bf25a8b73c373e8c
Author: Volkan Yazıcı <[email protected]>
AuthorDate: Tue Mar 26 09:00:51 2024 +0100
Add auto-generated plugin reference to the `3.x` site (#2407)
---
log4j-1.2-api/.log4j-plugin-processing-activator | 1 +
log4j-1.2-api/pom.xml | 20 +--
.../.log4j-plugin-processing-activator | 1 +
log4j-async-logger/pom.xml | 19 +--
.../.log4j-plugin-processing-activator | 1 +
log4j-config-properties/pom.xml | 19 +--
.../.log4j-plugin-processing-activator | 1 +
log4j-config-yaml/pom.xml | 19 +--
log4j-core-test/.log4j-plugin-processing-activator | 1 +
log4j-core-test/pom.xml | 33 ++---
log4j-core/.log4j-plugin-processing-activator | 1 +
log4j-core/pom.xml | 36 ++----
.../java/org/apache/logging/log4j/core/Layout.java | 2 +-
log4j-csv/.log4j-plugin-processing-activator | 1 +
log4j-csv/pom.xml | 20 +--
log4j-docker/.log4j-plugin-processing-activator | 1 +
log4j-docker/pom.xml | 25 +---
log4j-flume-ng/.log4j-plugin-processing-activator | 1 +
log4j-flume-ng/pom.xml | 21 +---
.../.log4j-plugin-processing-activator | 1 +
log4j-jdbc-dbcp2/pom.xml | 20 +--
log4j-jdbc/.log4j-plugin-processing-activator | 1 +
log4j-jdbc/pom.xml | 18 +--
log4j-jndi/.log4j-plugin-processing-activator | 1 +
log4j-jndi/pom.xml | 21 +---
log4j-jul/pom.xml | 13 --
.../.log4j-plugin-processing-activator | 1 +
log4j-kubernetes/pom.xml | 22 +---
.../.log4j-plugin-processing-activator | 1 +
log4j-layout-template-json-test/pom.xml | 70 ++++++-----
.../.log4j-plugin-processing-activator | 1 +
log4j-layout-template-json/pom.xml | 45 ++-----
log4j-mongodb4/.log4j-plugin-processing-activator | 1 +
log4j-mongodb4/pom.xml | 18 +--
log4j-osgi-test/.log4j-plugin-processing-activator | 1 +
log4j-osgi-test/pom.xml | 22 ++--
log4j-parent/pom.xml | 115 +++++++++++++++++
log4j-plugin-processor/pom.xml | 8 ++
.../.log4j-plugin-processing-activator | 1 +
log4j-plugins-test/pom.xml | 21 ++--
log4j-script/.log4j-plugin-processing-activator | 1 +
log4j-script/pom.xml | 19 +--
.../appender/rolling/action/ScriptCondition.java | 4 +-
pom.xml | 138 +++++++++++++++++++--
src/changelog/.3.x.x/add_plugin_reference.xml | 9 ++
src/site/asciidoc/plugin-reference.adoc | 22 ++++
.../asciidoctor}/document.html.erb | 1 +
src/template/docgen/index.adoc.ftl | 59 +++++++++
src/template/docgen/type.adoc.ftl | 133 ++++++++++++++++++++
49 files changed, 620 insertions(+), 391 deletions(-)
diff --git a/log4j-1.2-api/.log4j-plugin-processing-activator
b/log4j-1.2-api/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-1.2-api/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-1.2-api/pom.xml b/log4j-1.2-api/pom.xml
index 6e38bbee4e..e53d42ddf6 100644
--- a/log4j-1.2-api/pom.xml
+++ b/log4j-1.2-api/pom.xml
@@ -16,17 +16,21 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
<version>${revision}</version>
<relativePath>../log4j-parent</relativePath>
</parent>
+
<artifactId>log4j-1.2-api</artifactId>
<packaging>jar</packaging>
<name>Apache Log4j 1.x Compatibility API</name>
<description>The Apache Log4j 1.x Compatibility API</description>
+
<properties>
<log4jParentDir>${basedir}/..</log4jParentDir>
@@ -45,6 +49,7 @@
<Fragment-Host>org.apache.logging.log4j.core</Fragment-Host>
<!-- we have an `bnd.bnd` file to override the parent's defaults -->
</properties>
+
<dependencies>
<dependency>
<groupId>javax.jms</groupId>
@@ -127,21 +132,6 @@
<build>
<plugins>
- <!-- Enable Log4j plugin processing -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
-
<!-- Illegal access is disabled by default in Java 16 due to JEP-396.
We are relaxing it for tests. -->
<plugin>
diff --git a/log4j-async-logger/.log4j-plugin-processing-activator
b/log4j-async-logger/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-async-logger/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-async-logger/pom.xml b/log4j-async-logger/pom.xml
index aba22bd83d..c9f7379845 100644
--- a/log4j-async-logger/pom.xml
+++ b/log4j-async-logger/pom.xml
@@ -16,7 +16,9 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
@@ -66,21 +68,4 @@
</dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
- </plugins>
- </build>
</project>
diff --git a/log4j-config-properties/.log4j-plugin-processing-activator
b/log4j-config-properties/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-config-properties/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-config-properties/pom.xml b/log4j-config-properties/pom.xml
index 35aa18e1a5..14a6a5691c 100644
--- a/log4j-config-properties/pom.xml
+++ b/log4j-config-properties/pom.xml
@@ -16,7 +16,9 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
@@ -48,21 +50,4 @@
</dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
- </plugins>
- </build>
</project>
diff --git a/log4j-config-yaml/.log4j-plugin-processing-activator
b/log4j-config-yaml/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-config-yaml/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-config-yaml/pom.xml b/log4j-config-yaml/pom.xml
index c09c0fa0b4..8b02dd275d 100644
--- a/log4j-config-yaml/pom.xml
+++ b/log4j-config-yaml/pom.xml
@@ -16,7 +16,9 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
@@ -48,21 +50,4 @@
</dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
- </plugins>
- </build>
</project>
diff --git a/log4j-core-test/.log4j-plugin-processing-activator
b/log4j-core-test/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-core-test/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-core-test/pom.xml b/log4j-core-test/pom.xml
index 2bdec622f7..e893432684 100644
--- a/log4j-core-test/pom.xml
+++ b/log4j-core-test/pom.xml
@@ -16,7 +16,9 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
@@ -28,6 +30,7 @@
<packaging>jar</packaging>
<name>Apache Log4j Core Tests</name>
<description>The Apache Log4j Implementation Tests</description>
+
<properties>
<!-- Ignore less important (high rank) bugs for test artifacts -->
<spotbugs.maxRank>9</spotbugs.maxRank>
@@ -58,6 +61,7 @@
spring.test;substitute="spring-test"
</bnd-extra-module-options>
</properties>
+
<dependencies>
<!-- Used for OSGi bundle support -->
<dependency>
@@ -288,35 +292,10 @@
<scope>test</scope>
</dependency>
</dependencies>
+
<build>
<plugins>
- <!-- Enable Log4j plugin processing -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- <executions>
- <execution>
- <id>default-testCompile</id>
- <configuration>
- <compilerArgs combine.children="append">
- <!-- Disable automatic package discovery, which overwrites
`log4j-core` plugins. -->
- <arg>-ApluginPackage=org.apache.logging.log4j.core.test2</arg>
- </compilerArgs>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
@@ -344,6 +323,7 @@
</plugins>
</build>
+
<profiles>
<profile>
<id>fast-test</id>
@@ -359,4 +339,5 @@
</build>
</profile>
</profiles>
+
</project>
diff --git a/log4j-core/.log4j-plugin-processing-activator
b/log4j-core/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-core/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-core/pom.xml b/log4j-core/pom.xml
index e676d00b87..66a444575f 100644
--- a/log4j-core/pom.xml
+++ b/log4j-core/pom.xml
@@ -16,20 +16,27 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
<version>${revision}</version>
<relativePath>../log4j-parent</relativePath>
</parent>
+
<artifactId>log4j-core</artifactId>
<packaging>jar</packaging>
<name>Apache Log4j Core</name>
<description>The Apache Log4j Implementation</description>
+
<properties>
<maven.javadoc.skip>false</maven.javadoc.skip>
+ <!-- Tests are located elsewhere, no need to do any processing for the
`src/test` directory: -->
+ <maven.test.skip>true</maven.test.skip>
+
<!--
~ OSGi and JPMS options
-->
@@ -62,7 +69,10 @@
jdk.unsupported;transitive=false,
org.fusesource.jansi;transitive=false,
</bnd-extra-module-options>
+
+
<log4j.docgen.pluginDescriptorsDir.effective>${log4j.docgen.pluginDescriptorsDir.phase1}</log4j.docgen.pluginDescriptorsDir.effective>
</properties>
+
<dependencies>
<!-- Naturally, all implementations require the log4j-api JAR -->
<dependency>
@@ -99,31 +109,5 @@
<optional>true</optional>
</dependency>
</dependencies>
- <build>
- <plugins>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-failsafe-plugin</artifactId>
- <configuration>
- <skipTests>true</skipTests>
- </configuration>
- </plugin>
- </plugins>
- </build>
</project>
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/Layout.java
b/log4j-core/src/main/java/org/apache/logging/log4j/core/Layout.java
index 1821103ad2..62641d810e 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/Layout.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/Layout.java
@@ -24,7 +24,7 @@ import org.apache.logging.log4j.core.layout.Encoder;
/**
* Converts {@link LogEvent} instances into different layouts of data. A
layout typically encodes into either
- * a {@link String} or {@code byte[]}. Since version 2.6, layouts implement
{@link Encoder Encoder<LogEvent>}
+ * a {@link String} or {@code byte[]}. Since version 2.6, layouts implement
{@link Encoder}
* to support direct encoding of a log event into a {@link
ByteBufferDestination} without creating temporary
* intermediary objects. Since version 3.0.0, layouts no longer reference the
legacy Java serialization API
* and are limited to strings or bytes.
diff --git a/log4j-csv/.log4j-plugin-processing-activator
b/log4j-csv/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-csv/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-csv/pom.xml b/log4j-csv/pom.xml
index 9556eb32a2..5c617c1b0b 100644
--- a/log4j-csv/pom.xml
+++ b/log4j-csv/pom.xml
@@ -16,7 +16,9 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
@@ -27,6 +29,7 @@
<artifactId>log4j-csv</artifactId>
<name>Apache Log4j CSV</name>
<description>Apache Log4j CSV Layout.</description>
+
<properties>
<log4jParentDir>${basedir}/..</log4jParentDir>
@@ -92,21 +95,4 @@
</dependency>
</dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
- </plugins>
- </build>
</project>
diff --git a/log4j-docker/.log4j-plugin-processing-activator
b/log4j-docker/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-docker/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-docker/pom.xml b/log4j-docker/pom.xml
index 890688836e..2b6c19f09e 100644
--- a/log4j-docker/pom.xml
+++ b/log4j-docker/pom.xml
@@ -16,17 +16,21 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
<version>${revision}</version>
<relativePath>../log4j-parent</relativePath>
</parent>
+
<artifactId>log4j-docker</artifactId>
<packaging>jar</packaging>
<name>Apache Log4j Docker Library</name>
<description>Apache Log4j Docker Support</description>
+
<properties>
<!--
@@ -39,6 +43,7 @@
</bnd-extra-module-options>
<Fragment-Host>org.apache.logging.log4j.core</Fragment-Host>
</properties>
+
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
@@ -68,24 +73,4 @@
</dependency>
</dependencies>
- <build>
- <plugins>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
-
- </plugins>
- </build>
-
</project>
diff --git a/log4j-flume-ng/.log4j-plugin-processing-activator
b/log4j-flume-ng/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-flume-ng/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-flume-ng/pom.xml b/log4j-flume-ng/pom.xml
index 1502520b8c..fcfdff50f0 100644
--- a/log4j-flume-ng/pom.xml
+++ b/log4j-flume-ng/pom.xml
@@ -16,7 +16,9 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
@@ -28,6 +30,7 @@
<packaging>jar</packaging>
<name>Apache Log4j Flume Bridge</name>
<description>The Apache Log4j Flume Appender</description>
+
<properties>
<log4jParentDir>${basedir}/..</log4jParentDir>
@@ -41,6 +44,7 @@
</bnd-extra-module-options>
<Fragment-Host>org.apache.logging.log4j.core</Fragment-Host>
</properties>
+
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
@@ -115,21 +119,4 @@
</dependency>
</dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
- </plugins>
- </build>
</project>
diff --git a/log4j-jdbc-dbcp2/.log4j-plugin-processing-activator
b/log4j-jdbc-dbcp2/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-jdbc-dbcp2/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-jdbc-dbcp2/pom.xml b/log4j-jdbc-dbcp2/pom.xml
index ec67a8828e..70882c37f0 100644
--- a/log4j-jdbc-dbcp2/pom.xml
+++ b/log4j-jdbc-dbcp2/pom.xml
@@ -16,7 +16,9 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
@@ -27,6 +29,7 @@
<artifactId>log4j-jdbc-dbcp2</artifactId>
<name>Apache Log4j JDBC DBCP 2</name>
<description>Connection source for the JDBC Appender using Apache Commons
DBCP2.</description>
+
<properties>
<!--
@@ -86,21 +89,4 @@
</dependency>
</dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
- </plugins>
- </build>
</project>
diff --git a/log4j-jdbc/.log4j-plugin-processing-activator
b/log4j-jdbc/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-jdbc/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-jdbc/pom.xml b/log4j-jdbc/pom.xml
index 5b247493e1..ebfd698839 100644
--- a/log4j-jdbc/pom.xml
+++ b/log4j-jdbc/pom.xml
@@ -16,7 +16,9 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
@@ -27,6 +29,7 @@
<artifactId>log4j-jdbc</artifactId>
<name>Apache Log4j JDBC</name>
<description>Apache Log4j Java Database Connectivity (JDBC).</description>
+
<properties>
<log4jParentDir>${basedir}/..</log4jParentDir>
@@ -115,20 +118,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
-
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
@@ -144,4 +133,5 @@
</plugins>
</build>
+
</project>
diff --git a/log4j-jndi/.log4j-plugin-processing-activator
b/log4j-jndi/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-jndi/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-jndi/pom.xml b/log4j-jndi/pom.xml
index fe20c57a27..2ac3318322 100644
--- a/log4j-jndi/pom.xml
+++ b/log4j-jndi/pom.xml
@@ -16,7 +16,9 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
@@ -28,10 +30,12 @@
<packaging>jar</packaging>
<name>Apache Log4j JNDI Support</name>
<description>The Apache Log4j JNDI Support</description>
+
<properties>
<log4jParentDir>${basedir}/..</log4jParentDir>
<module.name>org.apache.logging.log4j.jndi</module.name>
</properties>
+
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
@@ -43,21 +47,4 @@
</dependency>
</dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
- </plugins>
- </build>
</project>
diff --git a/log4j-jul/pom.xml b/log4j-jul/pom.xml
index 5fb2704a4c..84b1f81dc1 100644
--- a/log4j-jul/pom.xml
+++ b/log4j-jul/pom.xml
@@ -85,19 +85,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
diff --git a/log4j-kubernetes/.log4j-plugin-processing-activator
b/log4j-kubernetes/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-kubernetes/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-kubernetes/pom.xml b/log4j-kubernetes/pom.xml
index 9162c079fd..267dd6bd40 100644
--- a/log4j-kubernetes/pom.xml
+++ b/log4j-kubernetes/pom.xml
@@ -16,17 +16,21 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
<version>${revision}</version>
<relativePath>../log4j-parent</relativePath>
</parent>
+
<artifactId>log4j-kubernetes</artifactId>
<packaging>jar</packaging>
<name>Apache Log4j Kubernetes Library</name>
<description>Apache Log4j Kubernetes Support</description>
+
<properties>
<!--
@@ -39,6 +43,7 @@
</bnd-extra-module-options>
<Fragment-Host>org.apache.logging.log4j.core</Fragment-Host>
</properties>
+
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
@@ -65,21 +70,4 @@
</dependency>
</dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
- </plugins>
- </build>
</project>
diff --git a/log4j-layout-template-json-test/.log4j-plugin-processing-activator
b/log4j-layout-template-json-test/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-layout-template-json-test/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-layout-template-json-test/pom.xml
b/log4j-layout-template-json-test/pom.xml
index da4d69599b..a87e8d1874 100644
--- a/log4j-layout-template-json-test/pom.xml
+++ b/log4j-layout-template-json-test/pom.xml
@@ -16,7 +16,9 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
@@ -38,99 +40,90 @@
</properties>
<dependencies>
+
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-layout-template-json</artifactId>
</dependency>
+
<!-- needed for
`MessageResolverTest#log4j1_logger_calls_should_use_fallbackKey` -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<scope>test</scope>
</dependency>
+
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-config-properties</artifactId>
<scope>test</scope>
</dependency>
+
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-config-yaml</artifactId>
<scope>test</scope>
</dependency>
+
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core-test</artifactId>
<scope>test</scope>
</dependency>
+
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>
+
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<scope>test</scope>
</dependency>
+
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<scope>test</scope>
</dependency>
+
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<scope>test</scope>
</dependency>
+
<dependency>
<groupId>com.google.code.java-allocation-instrumenter</groupId>
<artifactId>java-allocation-instrumenter</artifactId>
<scope>test</scope>
</dependency>
+
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
+
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<scope>test</scope>
</dependency>
+
<dependency>
<groupId>co.elastic.logging</groupId>
<artifactId>log4j2-ecs-layout</artifactId>
<scope>test</scope>
</dependency>
+
</dependencies>
<build>
<plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- <executions>
- <execution>
- <id>default-testCompile</id>
- <configuration>
- <compilerArgs combine.children="append">
- <!-- Disable automatic package discovery, which overwrites
`log4j-layout-template-json` plugins. -->
-
<arg>-ApluginPackage=org.apache.logging.log4j.layout.template.json.test</arg>
- </compilerArgs>
- </configuration>
- </execution>
- </executions>
- </plugin>
+
<!-- Disable ITs, which are Docker-dependent, by default. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -147,6 +140,7 @@
</execution>
</executions>
</plugin>
+
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
@@ -162,17 +156,29 @@
</systemPropertyVariables>
</configuration>
</plugin>
+
</plugins>
</build>
<profiles>
<profile>
+
<id>docker</id>
+
<activation>
<activeByDefault>false</activeByDefault>
</activation>
+
+ <properties>
+ <elastic.version>8.10.2</elastic.version>
+ <!-- `docker run elasticsearch:<TAG>` exists with code 137 due to
insufficient memory.
+ We limit the used JVM memory to avoid this OOM failure. -->
+ <elastic.java-opts>-Xms750m -Xmx750m</elastic.java-opts>
+ </properties>
+
<build>
<plugins>
+
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
@@ -183,14 +189,13 @@
<images>
<image>
<alias>elasticsearch</alias>
-
<name>docker.elastic.co/elasticsearch/elasticsearch:8.2.2</name>
+ <name>elasticsearch:${elastic.version}</name>
<run>
<env>
- <xpack.security.enabled>false</xpack.security.enabled>
<discovery.type>single-node</discovery.type>
+ <xpack.security.enabled>false</xpack.security.enabled>
+ <ES_JAVA_OPTS>${elastic.java-opts}</ES_JAVA_OPTS>
</env>
- <memory>1000000000</memory>
- <!-- 1g -->
<ports>
<port>9200:9200</port>
</ports>
@@ -211,7 +216,7 @@
</image>
<image>
<alias>logstash</alias>
- <name>docker.elastic.co/logstash/logstash:8.2.2</name>
+ <name>logstash:${elastic.version}</name>
<run>
<dependsOn>
<container>elasticsearch</container>
@@ -221,6 +226,9 @@
<name>log4j-layout-template-json-network</name>
<alias>logstash</alias>
</network>
+ <env>
+ <LS_JAVA_OPTS>${elastic.java-opts}</LS_JAVA_OPTS>
+ </env>
<ports>
<port>12222:12222</port>
<port>12345:12345</port>
@@ -306,11 +314,11 @@
</execution>
</executions>
</plugin>
+
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
- <skip>false</skip>
<includes>
<include>**/*IT.java</include>
</includes>
@@ -324,8 +332,10 @@
</execution>
</executions>
</plugin>
+
</plugins>
</build>
+
</profile>
</profiles>
diff --git a/log4j-layout-template-json/.log4j-plugin-processing-activator
b/log4j-layout-template-json/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-layout-template-json/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-layout-template-json/pom.xml
b/log4j-layout-template-json/pom.xml
index 866c8180fb..e2682a71cf 100644
--- a/log4j-layout-template-json/pom.xml
+++ b/log4j-layout-template-json/pom.xml
@@ -32,6 +32,10 @@
<properties>
<log4jParentDir>${basedir}/..</log4jParentDir>
+ <!-- Using `maven.test.skip` instead of `skipTests`, since there are no
tests.
+ That is, there is nothing to compile. -->
+ <maven.test.skip>true</maven.test.skip>
+
<!--
~ OSGi and JPMS options
-->
@@ -40,55 +44,22 @@
</properties>
<dependencies>
+
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
+
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
+
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-plugins</artifactId>
</dependency>
- </dependencies>
- <build>
- <plugins>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
-
- <!-- Disable Failsafe since tests go to the `-test` module. -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-failsafe-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
-
- </plugins>
- </build>
+ </dependencies>
</project>
diff --git a/log4j-mongodb4/.log4j-plugin-processing-activator
b/log4j-mongodb4/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-mongodb4/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-mongodb4/pom.xml b/log4j-mongodb4/pom.xml
index 6292a1e3ff..f92c2ab0c8 100644
--- a/log4j-mongodb4/pom.xml
+++ b/log4j-mongodb4/pom.xml
@@ -16,7 +16,9 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
@@ -27,8 +29,8 @@
<artifactId>log4j-mongodb4</artifactId>
<name>Apache Log4j MongoDB 4</name>
<description>MongoDB appender for Log4j using the MongoDB 4 driver
API.</description>
- <properties>
+ <properties>
<!--
~ OSGi and JPMS options
-->
@@ -116,20 +118,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
-
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
diff --git a/log4j-osgi-test/.log4j-plugin-processing-activator
b/log4j-osgi-test/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-osgi-test/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-osgi-test/pom.xml b/log4j-osgi-test/pom.xml
index ad9fc96e19..20722f8542 100644
--- a/log4j-osgi-test/pom.xml
+++ b/log4j-osgi-test/pom.xml
@@ -16,17 +16,21 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
<version>${revision}</version>
<relativePath>../log4j-parent</relativePath>
</parent>
+
<artifactId>log4j-osgi-test</artifactId>
<packaging>jar</packaging>
<name>Apache Log4j OSGi tests</name>
<description>The Apache Log4j OSGi tests</description>
+
<properties>
<module.name>org.apache.logging.log4j.osgi</module.name>
<bnd.baseline.skip>true</bnd.baseline.skip>
@@ -37,6 +41,7 @@
<spotbugs.skip>true</spotbugs.skip>
<spifly.version>1.3.7</spifly.version>
</properties>
+
<dependencies>
<dependency>
<groupId>javax.inject</groupId>
@@ -136,7 +141,9 @@
<scope>test</scope>
</dependency>
</dependencies>
+
<build>
+
<testResources>
<testResource>
<!-- Enable variable interpolation in resources -->
@@ -144,6 +151,7 @@
<directory>src/test/resources</directory>
</testResource>
</testResources>
+
<plugins>
<!--
@@ -181,20 +189,6 @@
</executions>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
-
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
diff --git a/log4j-parent/pom.xml b/log4j-parent/pom.xml
index 82386384b4..a0ca9f8b3e 100644
--- a/log4j-parent/pom.xml
+++ b/log4j-parent/pom.xml
@@ -16,7 +16,9 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
@@ -1014,6 +1016,7 @@
</build>
<profiles>
+
<profile>
<id>parallel-tests</id>
<build>
@@ -1028,6 +1031,118 @@
</plugins>
</build>
</profile>
+
+ <profile>
+
+ <id>plugin-processing</id>
+
+ <!-- Profile gets activated using a file instead of, say, a property
defined by the child `pom.xml`.
+ Since a Maven property lookup requires model interpolation and that
happens after the profile activation phase.
+ See: https://maven.apache.org/ref/3.9.6/maven-model-builder -->
+ <activation>
+ <file>
+ <exists>.log4j-plugin-processing-activator</exists>
+ </file>
+ </activation>
+
+ <properties>
+
<log4j.docgen.pluginDescriptorsDir.effective>${log4j.docgen.pluginDescriptorsDir.phase2}</log4j.docgen.pluginDescriptorsDir.effective>
+ </properties>
+
+ <build>
+ <plugins>
+
+ <!-- Generate a random target package for `Log4jPlugins.java` -->
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-plugin-package-for-tests</id>
+ <goals>
+ <goal>bsh-property</goal>
+ </goals>
+ <phase>process-test-resources</phase>
+ <configuration>
+ <properties>
+ <property>log4jPluginPackageForTests</property>
+ </properties>
+ <source><![CDATA[
+ import java.util.Locale;
+ import java.util.Random;
+
+ String groupId = project.getGroupId();
+ String sanitizedArtifactId = project
+ .getArtifactId()
+ .toLowerCase(Locale.US)
+ .replaceFirst("^log4j-", "")
+ .replaceAll("[^a-z]", "_");
+ int salt = new
Random(sanitizedArtifactId.hashCode()).nextInt(1000);
+ String log4jPluginPackageForTests =
String.format("%s.%s.internal%d", new Object[] {
+ groupId, sanitizedArtifactId, salt
+ });
+ ]]></source>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+
+ <configuration>
+ <annotationProcessorPaths combine.children="append">
+ <!-- Include
`org.apache.logging.log4j.docgen.processor.DescriptorGenerator` that generates
`log4j-plugins.xml`.
+ `DescriptorGenerator` must precede `PluginProcessor`,
since the latter *claims* the `@Plugin`.
+ Once claimed, `javac` doesn't pass those sources to other
processors. -->
+ <path>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-docgen</artifactId>
+ <version>${log4j-docgen.version}</version>
+ </path>
+ <!--
`org.apache.logging.log4j.plugin.processor.PluginProcessor` invocation: -->
+ <path>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-plugin-processor</artifactId>
+ <version>${project.version}</version>
+ </path>
+ </annotationProcessorPaths>
+ <compilerArgs combine.children="append">
+ <!-- Provide
`org.apache.logging.log4j.docgen.processor.DescriptorGenerator` arguments: -->
+
<arg>-Alog4j.docgen.descriptorFilePath=${log4j.docgen.pluginDescriptorsDir.effective}/${project.artifactId}-plugins.xml</arg>
+ <arg>-Alog4j.docgen.groupId=${project.groupId}</arg>
+ <arg>-Alog4j.docgen.artifactId=${project.artifactId}</arg>
+ <arg>-Alog4j.docgen.version=${project.version}</arg>
+ <arg>-Alog4j.docgen.description=${project.description}</arg>
+
<arg>-Alog4j.docgen.typeFilter.excludePattern=${log4j.docgen.typeFilter.excludePattern}</arg>
+ </compilerArgs>
+ </configuration>
+
+ <!-- `PluginProcessor` generates a `Log4jPlugins.java` and
registers it with `ServiceLoader`.
+ The package of this class is normally auto-computed as the
common prefix of all plugin classes.
+ Some modules contain plugins in both `src/main` and
`src/test`.
+ Without an additional annotation processor parameter, one
class shadows the other one.
+ Hence, we point the one in `src/test` to elsewhere. -->
+ <executions>
+ <execution>
+ <id>default-testCompile</id>
+ <configuration>
+ <compilerArgs combine.children="append">
+ <arg>-ApluginPackage=${log4jPluginPackageForTests}</arg>
+ </compilerArgs>
+ </configuration>
+ </execution>
+ </executions>
+
+ </plugin>
+
+ </plugins>
+ </build>
+
+ </profile>
+
</profiles>
</project>
diff --git a/log4j-plugin-processor/pom.xml b/log4j-plugin-processor/pom.xml
index 4c20538441..26034033aa 100644
--- a/log4j-plugin-processor/pom.xml
+++ b/log4j-plugin-processor/pom.xml
@@ -16,7 +16,9 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
@@ -28,17 +30,23 @@
<packaging>jar</packaging>
<name>Apache Log4j Plugin Processor</name>
<description>Log4j Plugin Annotation Processor</description>
+
<properties>
<log4jParentDir>${basedir}/..</log4jParentDir>
</properties>
+
<dependencies>
+
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
+
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-plugins</artifactId>
</dependency>
+
</dependencies>
+
</project>
diff --git a/log4j-plugins-test/.log4j-plugin-processing-activator
b/log4j-plugins-test/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-plugins-test/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-plugins-test/pom.xml b/log4j-plugins-test/pom.xml
index 6fce895866..765cf1c882 100644
--- a/log4j-plugins-test/pom.xml
+++ b/log4j-plugins-test/pom.xml
@@ -16,7 +16,9 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
@@ -28,9 +30,11 @@
<packaging>jar</packaging>
<name>Apache Log4j Plugins Test</name>
<description>Log4j Plugin Test Support</description>
+
<properties>
<log4jParentDir>${basedir}/..</log4jParentDir>
</properties>
+
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
@@ -68,23 +72,10 @@
<scope>test</scope>
</dependency>
</dependencies>
+
<build>
<plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
-
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
@@ -103,6 +94,7 @@
</plugins>
</build>
+
<profiles>
<profile>
<id>parallel-tests</id>
@@ -128,4 +120,5 @@
</build>
</profile>
</profiles>
+
</project>
diff --git a/log4j-script/.log4j-plugin-processing-activator
b/log4j-script/.log4j-plugin-processing-activator
new file mode 100644
index 0000000000..ba133f3696
--- /dev/null
+++ b/log4j-script/.log4j-plugin-processing-activator
@@ -0,0 +1 @@
+This file is here to activate the `plugin-processing` Maven profile.
diff --git a/log4j-script/pom.xml b/log4j-script/pom.xml
index a1c00afe19..afb43d3300 100644
--- a/log4j-script/pom.xml
+++ b/log4j-script/pom.xml
@@ -16,7 +16,9 @@
~ limitations under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
@@ -111,21 +113,4 @@
</dependency>
</dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <annotationProcessorPaths combine.children="append">
- <path>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-plugin-processor</artifactId>
- <version>${project.version}</version>
- </path>
- </annotationProcessorPaths>
- </configuration>
- </plugin>
- </plugins>
- </build>
</project>
diff --git
a/log4j-script/src/main/java/org/apache/logging/log4j/script/appender/rolling/action/ScriptCondition.java
b/log4j-script/src/main/java/org/apache/logging/log4j/script/appender/rolling/action/ScriptCondition.java
index 373682397d..88006a9c34 100644
---
a/log4j-script/src/main/java/org/apache/logging/log4j/script/appender/rolling/action/ScriptCondition.java
+++
b/log4j-script/src/main/java/org/apache/logging/log4j/script/appender/rolling/action/ScriptCondition.java
@@ -92,8 +92,8 @@ public class ScriptCondition implements ScriptConditional {
* <li>pathList - a {@code java.util.List} containing {@link
PathWithAttribute} objects. (The script is
* free to modify and return this list.)</li>
* <li>substitutor - a {@link StrSubstitutor} that can be used
to look up variables embedded in the base
- * dir or other properties
- * <li>statusLogger - the {@link StatusLogger} that can be used
to log events during script execution
+ * dir or other properties</li>
+ * <li>statusLogger - the {@link StatusLogger} that can be used
to log events during script execution</li>
* <li>any properties declared in the configuration</li>
* </ul>
* @param configuration the configuration
diff --git a/pom.xml b/pom.xml
index adb5cf93ec..5dffdfa995 100644
--- a/pom.xml
+++ b/pom.xml
@@ -331,18 +331,27 @@
======================== -->
<!-- `maven-javadoc-plugin` is only used to generate Javadoc HTML used in
the website.
We don't deploy any Javadoc JARs.
- We also don't generate Javadoc HTML for all modules, but only for two
modules: `log4j-api` and `log4j-core`. -->
- <doclint>all,-missing,-html</doclint>
+ We also don't generate Javadoc HTML for all modules, but only for two
modules: `log4j-api` and `log4j-core`.
+ Hence, we disable it by default: -->
<maven.javadoc.skip>true</maven.javadoc.skip>
- <!-- Skipping `maven-site-plugin` globally.
- It is manually enabled only for this root module below. -->
+ <doclint>all,-missing,-html</doclint>
+ <!-- Skipping `maven-site-plugin` globally. -->
<maven.site.skip>true</maven.site.skip>
<maven.site.deploy.skip>true</maven.site.deploy.skip>
- <!-- Temporary override for the `changelog-release` profile introduced by
`logging-parent`.
- This override can be removed once `logging-parent` updates
`log4j-tools` to version `0.7.0`.
- See https://github.com/apache/logging-log4j-tools/issues/89 -->
-
<log4j.changelog.versionPattern><![CDATA[^(?<major>0|[1-9]\d*)\.(?<minor>0|[1-9]\d*)\.(?<patch>(0|[1-9]\d*)(-[a-zA-Z][0-9a-zA-Z-]*)?)$]]></log4j.changelog.versionPattern>
+ <!-- ============================================================
+ Direct dependency version properties (in alphabetical order)
+ ============================================================ -->
+ <log4j-docgen.version>0.8.0</log4j-docgen.version>
+
+ <!-- ==================================
+ `log4j-docgen`-specific properties
+ ================================== -->
+ <!-- `log4j-docgen` qualified class name exclude pattern -->
+
<log4j.docgen.typeFilter.excludePattern>^java\..+</log4j.docgen.typeFilter.excludePattern>
+ <!-- Directories where `log4j-docgen` annotation processor will emit files
to -->
+
<log4j.docgen.pluginDescriptorsDir.phase1>${maven.multiModuleProjectDirectory}/target/plugin-descriptors/phase1</log4j.docgen.pluginDescriptorsDir.phase1>
+
<log4j.docgen.pluginDescriptorsDir.phase2>${maven.multiModuleProjectDirectory}/target/plugin-descriptors/phase2</log4j.docgen.pluginDescriptorsDir.phase2>
</properties>
@@ -603,6 +612,7 @@
<exclude>**/rabbitmq.config</exclude>
<exclude>**/MANIFEST.MF</exclude>
<exclude>.surefire-*</exclude>
+ <exclude>**/.log4j-*</exclude>
</excludes>
</configuration>
</plugin>
@@ -682,6 +692,7 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
+
<!-- Copy `src/site/_release-notes` to
`src/site/asciidoc/_release-notes`.
This is necessary since `logging-parent` version `<=10.1.1`
exports changelogs to `src/site/_release-notes`.
Though `maven-site-plugin` expects them to be at
`src/site/asciidoc/_release-notes`.
@@ -703,6 +714,7 @@
</resources>
</configuration>
</execution>
+
<!-- Copy `src/site` to `target/generated-sources/site` -->
<execution>
<id>copy-site</id>
@@ -725,6 +737,7 @@
</resources>
</configuration>
</execution>
+
<!-- Copy `target/site/apidocs` to the parent module's
`target/site/javadoc/<artifactId>` folder -->
<execution>
<id>copy-javadoc</id>
@@ -733,10 +746,10 @@
</goals>
<phase>site</phase>
<!-- This execution must be inherited and enabled by modules
publishing javadocs: `-api` and `-core`.
- Such modules enable this execution via `javadoc.skip`
property.
+ Such modules enable this execution via `maven.javadoc.skip`
property.
Hence, don't insert a `<inherited>false</inherited>`, please!
-->
<configuration>
- <skip>${javadoc.skip}</skip>
+ <skip>${maven.javadoc.skip}</skip>
<outputDirectory>${maven.multiModuleProjectDirectory}/target/site/javadoc/${project.artifactId}</outputDirectory>
<resources>
<resource>
@@ -744,6 +757,7 @@
</resource>
</resources>
</configuration>
+
</execution>
</executions>
</plugin>
@@ -769,9 +783,95 @@
</executions>
</plugin>
+ <plugin>
+
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-docgen-maven-plugin</artifactId>
+ <version>${log4j-docgen.version}</version>
+ <inherited>false</inherited>
+
+ <!-- Common docgen configuration -->
+ <configuration>
+
+ <!-- Descriptor processing order matters!
+
+ Imagine we place all descriptors to the same folder.
+ Assume that the filesystem walks folder contents in
alphanumeric order.
+ Sourcing `log4j-docgen:generate-*` from that folder will
consume descriptors in the following order:
+
+ 1. `log4j-1.2.api`
+ 2. `log4j-cassandra`
+ 3. `log4j-core`
+ 4. ...
+
+ For instance, `AbstractFilterable` is defined by the
descriptors of both `log4j-cassandra` and `log4j-core`.
+ Due to alphanumeric scanning order, it will appear as it is
provided by `log4j-cassandra`.
+ Though, it is actually provided by `log4j-core`.
+ To avoid this problem, we place descriptors to folders
associated with phases.
+ We pass the folder of each phase in a certain order to
`log4j-docgen:generate-*`. -->
+ <descriptorFileMatchers>
+ <descriptorFileMatcher>
+
<baseDirectory>${log4j.docgen.pluginDescriptorsDir.phase1}</baseDirectory>
+ </descriptorFileMatcher>
+ <descriptorFileMatcher>
+
<baseDirectory>${log4j.docgen.pluginDescriptorsDir.phase2}</baseDirectory>
+ </descriptorFileMatcher>
+ </descriptorFileMatchers>
+
+ <typeFilter>
+ <excludes>
+ <exclude>${log4j.docgen.typeFilter.excludePattern}</exclude>
+ </excludes>
+ </typeFilter>
+
+ </configuration>
+
+ <executions>
+
+ <!-- Generate AsciiDoc from downloaded plugin descriptors -->
+ <execution>
+ <id>generate-plugin-docs</id>
+ <goals>
+ <goal>generate-documentation</goal>
+ </goals>
+ <phase>pre-site</phase>
+ <configuration>
+
<templateDirectory>${project.basedir}/src/template/docgen</templateDirectory>
+ <indexTemplate>
+ <source>index.adoc.ftl</source>
+
<target>${project.build.directory}/generated-sources/site/asciidoc/plugin-reference.adoc</target>
+ </indexTemplate>
+ <typeTemplate>
+ <source>type.adoc.ftl</source>
+
<target>${project.build.directory}/generated-sources/site/asciidoc/_plugin-reference/%g-%a-%c.adoc</target>
+ </typeTemplate>
+ </configuration>
+ </execution>
+
+ <!-- Generate XSD from downloaded plugin descriptors -->
+ <execution>
+ <id>generate-plugin-schema</id>
+ <goals>
+ <goal>generate-schema</goal>
+ </goals>
+ <phase>pre-site</phase>
+ <configuration>
+ <schemaVersion>${project.version}</schemaVersion>
+
<schemaFile>${project.build.directory}/log4j-config.xsd</schemaFile>
+ </configuration>
+ </execution>
+
+ </executions>
+
+ </plugin>
+
<plugin>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctor-maven-plugin</artifactId>
+ <!-- `log4j-docgen` uses `asciidoctorj` version `3.x`.
+ Though `asciidoctor-maven-plugin` version `<3.0.0` doesn't work
against `asciidoctorj` version `3.x`.
+ Hence, override the `asciidoctor-maven-plugin` version to `3.x`.
-->
+ <version>3.0.0</version>
<inherited>false</inherited>
<dependencies>
<dependency>
@@ -779,6 +879,19 @@
<artifactId>spring-asciidoctor-extensions-block-switch</artifactId>
<version>0.6.3</version>
</dependency>
+ <!-- `log4j-docgen` uses `asciidoctorj` version `3.x`.
+ Though `asciidoctor-maven-plugin` version `3.x` still uses
`asciidoctorj` version `2.x`.
+ Hence, upgrade the `asciidoctorj` used to version `3.x`. -->
+ <dependency>
+ <groupId>org.asciidoctor</groupId>
+ <artifactId>asciidoctorj</artifactId>
+ <version>3.0.0-alpha.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-docgen-asciidoctor-extension</artifactId>
+ <version>${log4j-docgen.version}</version>
+ </dependency>
</dependencies>
<executions>
<execution>
@@ -793,11 +906,14 @@
<outputDirectory>target/site</outputDirectory>
<preserveDirectories>true</preserveDirectories>
<templateDirs>
- <dir>src/asciidoc/templates</dir>
+ <dir>src/template/asciidoctor</dir>
</templateDirs>
<attributes>
<source-highlighter>rouge</source-highlighter>
<toc>left</toc>
+
<log4j-docgen-descriptor-directory>${project.build.directory}/plugin-descriptors</log4j-docgen-descriptor-directory>
+
<log4j-docgen-type-filter-exclude-pattern>${log4j.docgen.typeFilter.excludePattern}</log4j-docgen-type-filter-exclude-pattern>
+
<log4j-docgen-type-target-template><![CDATA[#${sourcedType.groupId?replace('.',
'-')}_${sourcedType.artifactId?replace('.',
'-')}_${sourcedType.type.className?replace('.',
'-')}]]></log4j-docgen-type-target-template>
</attributes>
</configuration>
</execution>
diff --git a/src/changelog/.3.x.x/add_plugin_reference.xml
b/src/changelog/.3.x.x/add_plugin_reference.xml
new file mode 100644
index 0000000000..47618da733
--- /dev/null
+++ b/src/changelog/.3.x.x/add_plugin_reference.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="http://logging.apache.org/log4j/changelog"
+ xsi:schemaLocation="http://logging.apache.org/log4j/changelog
https://logging.apache.org/log4j/changelog-0.1.3.xsd"
+ type="added">
+ <issue id="1954"
link="https://github.com/apache/logging-log4j2/issues/1954"/>
+ <description format="asciidoc">Add _"Plugin Reference"_ to the website.
+It is a Javadoc-on-steroids focusing on Log4j plugins.</description>
+</entry>
diff --git a/src/site/asciidoc/plugin-reference.adoc
b/src/site/asciidoc/plugin-reference.adoc
new file mode 100644
index 0000000000..f41b0bbfba
--- /dev/null
+++ b/src/site/asciidoc/plugin-reference.adoc
@@ -0,0 +1,22 @@
+// vim: set syn=markdown :
+
+////
+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.
+////
+= Plugin reference
+
+This file is a stub.
+Its content will be auto-generated during build.
diff --git a/src/asciidoc/templates/document.html.erb
b/src/template/asciidoctor/document.html.erb
similarity index 99%
rename from src/asciidoc/templates/document.html.erb
rename to src/template/asciidoctor/document.html.erb
index 36d13b0bb8..3f0e34d84d 100644
--- a/src/asciidoc/templates/document.html.erb
+++ b/src/template/asciidoctor/document.html.erb
@@ -69,6 +69,7 @@
<!-- <li><a href="#">Manual</a></li>-->
<!-- <li><a href="#">Guides</a></li>-->
<li><a href="/legacy-docs.html">Old Docs</a></li>
+ <li><a href="/plugin-reference.html">Plugin reference</a></li>
<li><a
href="https://cwiki.apache.org/confluence/display/LOGGING/Log4j">Wiki</a></li>
<li><a href="/articles.html">Articles</a></li>
<li><a href="/faq.html">FAQ</a></li>
diff --git a/src/template/docgen/index.adoc.ftl
b/src/template/docgen/index.adoc.ftl
new file mode 100644
index 0000000000..9dc1d8c733
--- /dev/null
+++ b/src/template/docgen/index.adoc.ftl
@@ -0,0 +1,59 @@
+<#ftl output_format="plainText" strip_whitespace=true>
+<#--
+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
+
+https://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.
+-->
+<#-- @ftlvariable name="lookup"
type="org.apache.logging.log4j.docgen.generator.TypeLookup" -->
+
+= Plugin reference
+
+This page is a Javadoc-on-steroids specialized for Log4j plugins.
+This reference manual is derived from the source code of all Log4j plugins and
types associated with them.
+You can use this reference manual to precisely customize your `log4j2.xml`.
+
+[INFO]
+====
+Every running Log4j system is a constellation of
xref:../manual/plugins.adoc[plugins], which is analogous to beans in Java EE
and Spring.
+This not only allows Log4j itself to be developed in individual components,
but also enables extensibility users can leverage.
+====
+
+[#shortcuts]
+== Shortcuts
+
+*
xref:#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-config-Configuration[The
`<Configuration>` element assembly in a `log4j2.xml`]
+*
xref:#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-Appender[The
type hierarchy of *appenders*]
+*
xref:#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-Layout[The
type hierarchy of *layouts*]
+*
xref:#org-apache-logging-log4j_log4j-core_org-apache-logging-log4j-core-Filter[The
type hierarchy of *filters*]
+
+[#index]
+== Index
+
+Below is a list of all types reachable by plugins grouped by the Maven
coordinate of the artifact bundling them.
+
+<#assign sourcedTypes = lookup?values/>
+<#-- @ftlvariable name="sourcedTypes"
type="org.apache.logging.log4j.docgen.generator.ArtifactSourcedType[]" -->
+<#assign lastGroupId = ''/>
+<#assign lastArtifactId = ''/>
+<#list sourcedTypes?sort_by('artifactId', 'groupId', ['type', 'className']) as
sourcedType>
+ <#if sourcedType.groupId != lastGroupId || sourcedType.artifactId !=
lastArtifactId>
+ <#assign lastGroupId = sourcedType.groupId/>
+ <#assign lastArtifactId = sourcedType.artifactId/>
+
+[#${sourcedType.groupId?replace('.',
'-')}_${sourcedType.artifactId?replace('.', '-')}]
+=== `${sourcedType.groupId}:${sourcedType.artifactId}`
+
+ </#if>
+include::_plugin-reference/${sourcedType.groupId}-${sourcedType.artifactId}-${sourcedType.type.className}.adoc[leveloffset=+4]
+</#list>
diff --git a/src/template/docgen/type.adoc.ftl
b/src/template/docgen/type.adoc.ftl
new file mode 100644
index 0000000000..48f8dc2478
--- /dev/null
+++ b/src/template/docgen/type.adoc.ftl
@@ -0,0 +1,133 @@
+<#ftl output_format="plainText" strip_whitespace=true>
+<#--
+ 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
+
+ https://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.
+-->
+<#-- @ftlvariable name="sourcedType"
type="org.apache.logging.log4j.docgen.model.ArtifactSourcedType" -->
+<#assign type = sourcedType.type/>
+<#-- @ftlvariable name="type" type="org.apache.logging.log4j.docgen.Type" -->
+<#-- @ftlvariable name="lookup"
type="org.apache.logging.log4j.docgen.generator.TypeLookup" -->
+
+[#${sourcedType.groupId?replace('.',
'-')}_${sourcedType.artifactId?replace('.', '-')}_${type.className?replace('.',
'-')}]
+= ${type.name!('`' + type.className + '`')}
+
+Class:: `${type.className}`
+Provider:: `${sourcedType.groupId}:${sourcedType.artifactId}`
+
+${(type.description.text)!}
+
+<#assign hasElements = ((type.elements?size)!0) != 0/>
+<#if type.class.simpleName == 'PluginType'>
+ <#-- @ftlvariable name="type"
type="org.apache.logging.log4j.docgen.PluginType" -->
+[#${sourcedType.groupId?replace('.',
'-')}_${sourcedType.artifactId?replace('.', '-')}_${type.className?replace('.',
'-')}_XML-snippet]
+== XML snippet
+[source, xml]
+----
+ <#assign tag><${type.name} </#assign>
+ <#assign indent = tag?replace('.', ' ', 'r')/>
+ <#if !type.attributes?has_content>
+<${type.name}/>
+ <#else>
+ <#list type.attributes?sort_by('name') as attr>
+ <#if attr?is_first>
+${tag}${attr.name}="${attr.defaultValue!}"${attr?is_last?then(hasElements?then('>',
'/>'), '')}
+ <#else>
+${indent}${attr.name}="${attr.defaultValue!}"${attr?is_last?then(hasElements?then('>',
'/>'), '')}
+ </#if>
+ </#list>
+ <#if hasElements>
+ <#list type.elements as element>
+ <#assign multiplicitySuffix = (element.multiplicity ==
'*')?then('<!-- multiple occurrences allowed -->','')/>
+ <#assign elementName = 'a-' +
element.type?keep_after_last('.') + '-implementation'/>
+ <#if lookup[element.type]??>
+ <#assign element_type = lookup[element.type].type/>
+ <#-- @ftlvariable name="element_type"
type="org.apache.logging.log4j.docgen.model.AbstractType" -->
+ <#if element_type.name?? &&
!element_type.implementations?has_content>
+ <#assign elementName = element_type.name/>
+ </#if>
+ </#if>
+ <${elementName}/>${multiplicitySuffix}
+ </#list>
+</${type.name}>
+ </#if>
+ </#if>
+----
+</#if>
+<#if type.attributes?has_content>
+
+[#${sourcedType.groupId?replace('.',
'-')}_${sourcedType.artifactId?replace('.', '-')}_${type.className?replace('.',
'-')}-attributes]
+== Attributes
+
+Optional attributes are denoted by `?`-suffixed types.
+
+[cols="1m,1m,1m,5"]
+|===
+|Name|Type|Default|Description
+
+ <#list type.attributes?sort_by('name') as attr>
+ <#assign requirementSuffix = attr.required?then('', '?')/>
+|${attr.name}
+ <#assign attrTypeName =
attr.type?contains('.')?then(attr.type?keep_after_last('.'), attr.type)/>
+ <#if lookup[attr.type]??>
+ <#assign attrSourcedType = lookup[attr.type]/>
+|xref:#${attrSourcedType.groupId?replace('.',
'-')}_${attrSourcedType.artifactId?replace('.', '-')}_${attr.type?replace('.',
'-')}[${attrTypeName}]${requirementSuffix}
+ <#else>
+|${attrTypeName}${requirementSuffix}
+ </#if>
+|${attr.defaultValue!}
+a|${(attr.description.text)!}
+
+ </#list>
+|===
+</#if>
+<#if hasElements>
+
+[#${sourcedType.groupId?replace('.',
'-')}_${sourcedType.artifactId?replace('.', '-')}_${type.className?replace('.',
'-')}_components]
+== Nested components
+
+Optional components are denoted by `?`-suffixed types.
+
+[cols="1m,1m,5"]
+|===
+|Tag|Type|Description
+
+ <#list type.elements?sort_by('type') as element>
+ <#assign requirementSuffix = element.required?then('', '?')/>
+ <#assign descriptionCell = (element.description.text)!/>
+ <#assign elementName =
element.type?contains('.')?then(element.type?keep_after_last('.'),
element.type)/>
+ <#if lookup[element.type]??>
+ <#assign elementSourcedType = lookup[element.type]/>
+ <#assign tagCell = elementSourcedType.type.name!/>
+|${tagCell}
+|xref:#${elementSourcedType.groupId?replace('.',
'-')}_${elementSourcedType.artifactId?replace('.',
'-')}_${element.type?replace('.', '-')}[${elementName}]${requirementSuffix}
+ <#else>
+|
+|${elementName}${requirementSuffix}
+ </#if>
+a|${descriptionCell}
+
+ </#list>
+|===
+</#if>
+<#if type.implementations?has_content>
+
+[#${sourcedType.groupId?replace('.',
'-')}_${sourcedType.artifactId?replace('.', '-')}_${type.className?replace('.',
'-')}_implementations]
+== Known implementations
+
+ <#list type.implementations as impl>
+ <#assign implSourcedType = lookup[impl]/>
+* xref:#${implSourcedType.groupId?replace('.',
'-')}_${implSourcedType.artifactId?replace('.', '-')}_${impl?replace('.',
'-')}[${impl?contains('.')?then(impl?keep_after_last('.'), impl)}]
+ </#list>
+</#if>