You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by vy...@apache.org on 2023/01/25 16:17:29 UTC

[logging-log4j-tools] branch master updated (bb40095 -> 84ea2a0)

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

vy pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git


    from bb40095  Avoid `https` in XSD namespaces, since they are only used as an identifier (#13)
     new 43d1d4e  Fix `LICENSE.txt`
     new 403396b  Add `NOTICE.txt`
     new d55e011  Fix unreleased directory order in `ChangelogExporter` (#17)
     new 20e56e8  Add tests for `MavenChangesImporter`
     new 4bdd635  Add tests for `ChangelogExporter`
     new 7368098  Add tests for `ChangelogReleaser`
     new 84ea2a0  Mark Maven plugin dependencies as `provided`

The 7 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 CHANGELOG.adoc                                     |  2 +
 LICENSE.txt                                        |  2 +-
 NOTICE.txt                                         |  5 ++
 README.adoc                                        |  2 +-
 .../java/org/apache/logging/log4j/ExportMojo.java  |  2 +-
 .../java/org/apache/logging/log4j/ReleaseMojo.java |  6 +-
 log4j-changelog/README.adoc                        | 15 ++++-
 log4j-changelog/pom.xml                            | 18 +++++
 .../logging/log4j/changelog/ChangelogEntry.java    |  4 +-
 .../logging/log4j/changelog/ChangelogRelease.java  |  4 +-
 .../changelog/exporter/ChangelogExporter.java      |  5 +-
 .../changelog/exporter/ChangelogExporterArgs.java  | 11 ++-
 .../changelog/importer/MavenChangesImporter.java   | 13 +++-
 .../importer/MavenChangesImporterArgs.java         | 21 +++++-
 .../changelog/releaser/ChangelogReleaser.java      |  3 +-
 .../changelog/releaser/ChangelogReleaserArgs.java  | 27 ++++++--
 .../logging/log4j/changelog/util/StringUtils.java  | 13 ++++
 .../logging/log4j/changelog/util/XmlUtils.java     | 42 +++++++++++-
 .../logging/log4j/changelog/util/XmlWriter.java    | 68 ++++++++++++-------
 .../log4j/changelog/ChangelogExporterTest.java     | 42 ++++++++++++
 .../log4j/changelog/ChangelogReleaserTest.java     | 65 ++++++++++++++++++
 .../logging/log4j/changelog/FileTestUtils.java     | 75 +++++++++++++++++++++
 .../log4j/changelog/MavenChangesImporterTest.java  | 43 ++++++++++++
 log4j-changelog/src/test/resources/1-changes.xml   | 78 ++++++++++++++++++++++
 ...Add_getExplicitLevel_method_to_LoggerConfig.xml | 25 +++++++
 ...ConsoleListener_use_SimpleLogger_internally.xml | 25 +++++++
 ..._InstantFormatter_against_delegate_failures.xml | 26 ++++++++
 .../test/resources/2-imported/2.17.2/.release.xml} | 33 +--------
 ...s_initialized_if_the_LoggerFactory_is_provi.xml | 26 ++++++++
 ...ContextDataInjector_initialization_deadlock.xml | 25 +++++++
 ..._Spring_Boot_Lookup_requires_the_log4j_spri.xml | 25 +++++++
 .../test/resources/2-imported/2.18.0/.release.xml} | 33 +--------
 ...erStrategy_should_use_the_current_time_when.xml | 25 +++++++
 ...lloverStrategy_was_not_detecting_the_correc.xml | 25 +++++++
 ...se_Paths_get_to_avoid_circular_file_systems.xml | 25 +++++++
 .../3-enriched/.2.x.x/.changelog.adoc.ftl          | 22 ++++++
 ...Add_getExplicitLevel_method_to_LoggerConfig.xml |  1 +
 ...ConsoleListener_use_SimpleLogger_internally.xml |  1 +
 ..._InstantFormatter_against_delegate_failures.xml |  1 +
 .../3-enriched/.3.x.x/.changelog.adoc.ftl          | 22 ++++++
 .../.3.x.x/1220_Simplify_site_generation.xml       | 25 +++++++
 .../1221_switch_from_jira_to_github_issues.xml     | 25 +++++++
 ...notation_to_support_plugin_ordering_when_tw.xml | 27 ++++++++
 .../3-enriched/.changelog-entries.adoc.ftl         | 48 +++++++++++++
 .../src/test/resources/3-enriched/.index.adoc.ftl  | 22 ++++++
 .../3-enriched/2.17.2/.changelog.adoc.ftl          | 47 +++++++++++++
 .../test/resources/3-enriched/2.17.2/.release.xml  |  1 +
 ...s_initialized_if_the_LoggerFactory_is_provi.xml |  1 +
 ...ContextDataInjector_initialization_deadlock.xml |  1 +
 ..._Spring_Boot_Lookup_requires_the_log4j_spri.xml |  1 +
 .../3-enriched/2.18.0/.changelog.adoc.ftl          | 36 ++++++++++
 .../test/resources/3-enriched/2.18.0/.release.xml  |  1 +
 ...erStrategy_should_use_the_current_time_when.xml |  1 +
 ...lloverStrategy_was_not_detecting_the_correc.xml |  1 +
 ...se_Paths_get_to_avoid_circular_file_systems.xml |  1 +
 .../src/test/resources/4-exported/2.17.2.adoc      | 56 ++++++++++++++++
 .../src/test/resources/4-exported/2.18.0.adoc      | 48 +++++++++++++
 .../src/test/resources/4-exported/2.x.x.adoc       | 31 +++++++++
 .../src/test/resources/4-exported/3.x.x.adoc       | 31 +++++++++
 .../src/test/resources/4-exported/index.adoc       | 23 +++++++
 .../5-unlinked/.2.x.x/.changelog.adoc.ftl          | 22 ++++++
 ...Add_getExplicitLevel_method_to_LoggerConfig.xml | 25 +++++++
 ...ConsoleListener_use_SimpleLogger_internally.xml | 25 +++++++
 ..._InstantFormatter_against_delegate_failures.xml | 26 ++++++++
 .../5-unlinked/.3.x.x/.changelog.adoc.ftl          | 22 ++++++
 .../.3.x.x/1220_Simplify_site_generation.xml       | 25 +++++++
 .../1221_switch_from_jira_to_github_issues.xml     | 25 +++++++
 ...notation_to_support_plugin_ordering_when_tw.xml | 27 ++++++++
 .../5-unlinked/.changelog-entries.adoc.ftl         | 48 +++++++++++++
 .../src/test/resources/5-unlinked/.index.adoc.ftl  | 22 ++++++
 .../5-unlinked/2.17.2/.changelog.adoc.ftl          | 47 +++++++++++++
 .../test/resources/5-unlinked/2.17.2/.release.xml} | 33 +--------
 ...s_initialized_if_the_LoggerFactory_is_provi.xml | 26 ++++++++
 ...ContextDataInjector_initialization_deadlock.xml | 25 +++++++
 ..._Spring_Boot_Lookup_requires_the_log4j_spri.xml | 25 +++++++
 .../5-unlinked/2.18.0/.changelog.adoc.ftl          | 36 ++++++++++
 .../test/resources/5-unlinked/2.18.0/.release.xml} | 33 +--------
 ...erStrategy_should_use_the_current_time_when.xml | 25 +++++++
 ...lloverStrategy_was_not_detecting_the_correc.xml | 25 +++++++
 ...se_Paths_get_to_avoid_circular_file_systems.xml | 25 +++++++
 .../6-released/.3.x.x/.changelog.adoc.ftl          | 22 ++++++
 .../.3.x.x/1220_Simplify_site_generation.xml       | 25 +++++++
 .../1221_switch_from_jira_to_github_issues.xml     | 25 +++++++
 ...notation_to_support_plugin_ordering_when_tw.xml | 27 ++++++++
 .../6-released/.changelog-entries.adoc.ftl         | 48 +++++++++++++
 .../src/test/resources/6-released/.index.adoc.ftl  | 22 ++++++
 .../6-released/2.17.2/.changelog.adoc.ftl          | 47 +++++++++++++
 .../test/resources/6-released/2.17.2/.release.xml} | 33 +--------
 ...s_initialized_if_the_LoggerFactory_is_provi.xml | 26 ++++++++
 ...ContextDataInjector_initialization_deadlock.xml | 25 +++++++
 ..._Spring_Boot_Lookup_requires_the_log4j_spri.xml | 25 +++++++
 .../6-released/2.18.0/.changelog.adoc.ftl          | 36 ++++++++++
 .../test/resources/6-released/2.18.0/.release.xml} | 33 +--------
 ...erStrategy_should_use_the_current_time_when.xml | 25 +++++++
 ...lloverStrategy_was_not_detecting_the_correc.xml | 25 +++++++
 ...se_Paths_get_to_avoid_circular_file_systems.xml | 25 +++++++
 .../6-released/2.19.0/.changelog.adoc.ftl          | 22 ++++++
 .../test/resources/6-released/2.19.0/.release.xml} | 33 +--------
 ...Add_getExplicitLevel_method_to_LoggerConfig.xml | 25 +++++++
 ...ConsoleListener_use_SimpleLogger_internally.xml | 25 +++++++
 ..._InstantFormatter_against_delegate_failures.xml | 26 ++++++++
 log4j-tools-parent/pom.xml                         | 23 +++++++
 102 files changed, 2254 insertions(+), 269 deletions(-)
 create mode 100644 NOTICE.txt
 create mode 100644 log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/ChangelogExporterTest.java
 create mode 100644 log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/ChangelogReleaserTest.java
 create mode 100644 log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/FileTestUtils.java
 create mode 100644 log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/MavenChangesImporterTest.java
 create mode 100644 log4j-changelog/src/test/resources/1-changes.xml
 create mode 100644 log4j-changelog/src/test/resources/2-imported/.2.x.x/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml
 create mode 100644 log4j-changelog/src/test/resources/2-imported/.2.x.x/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml
 create mode 100644 log4j-changelog/src/test/resources/2-imported/.2.x.x/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml
 copy log4j-changelog/{pom.xml => src/test/resources/2-imported/2.17.2/.release.xml} (52%)
 create mode 100644 log4j-changelog/src/test/resources/2-imported/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml
 create mode 100644 log4j-changelog/src/test/resources/2-imported/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml
 create mode 100644 log4j-changelog/src/test/resources/2-imported/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml
 copy log4j-changelog/{pom.xml => src/test/resources/2-imported/2.18.0/.release.xml} (52%)
 create mode 100644 log4j-changelog/src/test/resources/2-imported/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml
 create mode 100644 log4j-changelog/src/test/resources/2-imported/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml
 create mode 100644 log4j-changelog/src/test/resources/2-imported/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml
 create mode 100644 log4j-changelog/src/test/resources/3-enriched/.2.x.x/.changelog.adoc.ftl
 create mode 120000 log4j-changelog/src/test/resources/3-enriched/.2.x.x/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml
 create mode 120000 log4j-changelog/src/test/resources/3-enriched/.2.x.x/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml
 create mode 120000 log4j-changelog/src/test/resources/3-enriched/.2.x.x/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml
 create mode 100644 log4j-changelog/src/test/resources/3-enriched/.3.x.x/.changelog.adoc.ftl
 create mode 100644 log4j-changelog/src/test/resources/3-enriched/.3.x.x/1220_Simplify_site_generation.xml
 create mode 100644 log4j-changelog/src/test/resources/3-enriched/.3.x.x/1221_switch_from_jira_to_github_issues.xml
 create mode 100644 log4j-changelog/src/test/resources/3-enriched/.3.x.x/LOG4J2-857_Add_Ordered_annotation_to_support_plugin_ordering_when_tw.xml
 create mode 100644 log4j-changelog/src/test/resources/3-enriched/.changelog-entries.adoc.ftl
 create mode 100644 log4j-changelog/src/test/resources/3-enriched/.index.adoc.ftl
 create mode 100644 log4j-changelog/src/test/resources/3-enriched/2.17.2/.changelog.adoc.ftl
 create mode 120000 log4j-changelog/src/test/resources/3-enriched/2.17.2/.release.xml
 create mode 120000 log4j-changelog/src/test/resources/3-enriched/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml
 create mode 120000 log4j-changelog/src/test/resources/3-enriched/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml
 create mode 120000 log4j-changelog/src/test/resources/3-enriched/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml
 create mode 100644 log4j-changelog/src/test/resources/3-enriched/2.18.0/.changelog.adoc.ftl
 create mode 120000 log4j-changelog/src/test/resources/3-enriched/2.18.0/.release.xml
 create mode 120000 log4j-changelog/src/test/resources/3-enriched/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml
 create mode 120000 log4j-changelog/src/test/resources/3-enriched/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml
 create mode 120000 log4j-changelog/src/test/resources/3-enriched/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml
 create mode 100644 log4j-changelog/src/test/resources/4-exported/2.17.2.adoc
 create mode 100644 log4j-changelog/src/test/resources/4-exported/2.18.0.adoc
 create mode 100644 log4j-changelog/src/test/resources/4-exported/2.x.x.adoc
 create mode 100644 log4j-changelog/src/test/resources/4-exported/3.x.x.adoc
 create mode 100644 log4j-changelog/src/test/resources/4-exported/index.adoc
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/.2.x.x/.changelog.adoc.ftl
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/.2.x.x/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/.2.x.x/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/.2.x.x/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/.3.x.x/.changelog.adoc.ftl
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/.3.x.x/1220_Simplify_site_generation.xml
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/.3.x.x/1221_switch_from_jira_to_github_issues.xml
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/.3.x.x/LOG4J2-857_Add_Ordered_annotation_to_support_plugin_ordering_when_tw.xml
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/.changelog-entries.adoc.ftl
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/.index.adoc.ftl
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/2.17.2/.changelog.adoc.ftl
 copy log4j-changelog/{pom.xml => src/test/resources/5-unlinked/2.17.2/.release.xml} (52%)
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/2.18.0/.changelog.adoc.ftl
 copy log4j-changelog/{pom.xml => src/test/resources/5-unlinked/2.18.0/.release.xml} (52%)
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml
 create mode 100644 log4j-changelog/src/test/resources/5-unlinked/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml
 create mode 100644 log4j-changelog/src/test/resources/6-released/.3.x.x/.changelog.adoc.ftl
 create mode 100644 log4j-changelog/src/test/resources/6-released/.3.x.x/1220_Simplify_site_generation.xml
 create mode 100644 log4j-changelog/src/test/resources/6-released/.3.x.x/1221_switch_from_jira_to_github_issues.xml
 create mode 100644 log4j-changelog/src/test/resources/6-released/.3.x.x/LOG4J2-857_Add_Ordered_annotation_to_support_plugin_ordering_when_tw.xml
 create mode 100644 log4j-changelog/src/test/resources/6-released/.changelog-entries.adoc.ftl
 create mode 100644 log4j-changelog/src/test/resources/6-released/.index.adoc.ftl
 create mode 100644 log4j-changelog/src/test/resources/6-released/2.17.2/.changelog.adoc.ftl
 copy log4j-changelog/{pom.xml => src/test/resources/6-released/2.17.2/.release.xml} (52%)
 create mode 100644 log4j-changelog/src/test/resources/6-released/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml
 create mode 100644 log4j-changelog/src/test/resources/6-released/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml
 create mode 100644 log4j-changelog/src/test/resources/6-released/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml
 create mode 100644 log4j-changelog/src/test/resources/6-released/2.18.0/.changelog.adoc.ftl
 copy log4j-changelog/{pom.xml => src/test/resources/6-released/2.18.0/.release.xml} (52%)
 create mode 100644 log4j-changelog/src/test/resources/6-released/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml
 create mode 100644 log4j-changelog/src/test/resources/6-released/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml
 create mode 100644 log4j-changelog/src/test/resources/6-released/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml
 create mode 100644 log4j-changelog/src/test/resources/6-released/2.19.0/.changelog.adoc.ftl
 copy log4j-changelog/{pom.xml => src/test/resources/6-released/2.19.0/.release.xml} (52%)
 create mode 100644 log4j-changelog/src/test/resources/6-released/2.19.0/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml
 create mode 100644 log4j-changelog/src/test/resources/6-released/2.19.0/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml
 create mode 100644 log4j-changelog/src/test/resources/6-released/2.19.0/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml


[logging-log4j-tools] 04/07: Add tests for `MavenChangesImporter`

Posted by vy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git

commit 20e56e8123455f932e9ba8902b1b203247fb252c
Author: Volkan Yazıcı <vo...@yazi.ci>
AuthorDate: Wed Jan 25 15:08:49 2023 +0100

    Add tests for `MavenChangesImporter`
---
 log4j-changelog/README.adoc                        | 15 ++++-
 log4j-changelog/pom.xml                            | 12 ++++
 .../logging/log4j/changelog/ChangelogEntry.java    |  4 +-
 .../logging/log4j/changelog/ChangelogRelease.java  |  4 +-
 .../changelog/importer/MavenChangesImporter.java   | 13 +++-
 .../importer/MavenChangesImporterArgs.java         | 21 +++++-
 .../logging/log4j/changelog/util/StringUtils.java  | 13 ++++
 .../logging/log4j/changelog/util/XmlUtils.java     | 42 +++++++++++-
 .../logging/log4j/changelog/util/XmlWriter.java    | 68 ++++++++++++-------
 .../logging/log4j/changelog/FileTestUtils.java     | 75 +++++++++++++++++++++
 .../log4j/changelog/MavenChangesImporterTest.java  | 43 ++++++++++++
 log4j-changelog/src/test/resources/1-changes.xml   | 78 ++++++++++++++++++++++
 ...Add_getExplicitLevel_method_to_LoggerConfig.xml | 25 +++++++
 ...ConsoleListener_use_SimpleLogger_internally.xml | 25 +++++++
 ..._InstantFormatter_against_delegate_failures.xml | 26 ++++++++
 .../test/resources/2-imported/2.17.2/.release.xml} | 33 +--------
 ...s_initialized_if_the_LoggerFactory_is_provi.xml | 26 ++++++++
 ...ContextDataInjector_initialization_deadlock.xml | 25 +++++++
 ..._Spring_Boot_Lookup_requires_the_log4j_spri.xml | 25 +++++++
 .../test/resources/2-imported/2.18.0/.release.xml} | 33 +--------
 ...erStrategy_should_use_the_current_time_when.xml | 25 +++++++
 ...lloverStrategy_was_not_detecting_the_correc.xml | 25 +++++++
 ...se_Paths_get_to_avoid_circular_file_systems.xml | 25 +++++++
 log4j-tools-parent/pom.xml                         | 14 ++++
 24 files changed, 597 insertions(+), 98 deletions(-)

diff --git a/log4j-changelog/README.adoc b/log4j-changelog/README.adoc
index 1e13468..9e30d70 100644
--- a/log4j-changelog/README.adoc
+++ b/log4j-changelog/README.adoc
@@ -89,7 +89,10 @@ A typical `.release.xml` looks as follows:
 ----
 $ cat src/changelog/2.19.0/release.xml
 <?xml version="1.0" encoding="UTF-8"?>
-<release date="2022-09-09" version="2.19.0"/>
+<release xmlns="http://logging.apache.org/log4j/changelog"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+         date="2022-09-09" version="2.19.0"/>
 ----
 
 A typical changelog entry file looks as follows:
@@ -98,7 +101,10 @@ A typical changelog entry file looks as follows:
 ----
 $ cat src/changelog/.2.x.x/LOG4J2-3628_new_changelog_infra.xml
 <?xml version="1.0" encoding="UTF-8"?>
-<entry type="fixed">
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="fixed">
   <issue id="LOG4J2-3556" link="https://issues.apache.org/jira/browse/LOG4J2-3556"/>
   <author id="vy"/>
   <author name="Arthur Gavlyukovskiy"/>
@@ -161,7 +167,10 @@ A sample _changelog entry_ file is shared below.
 .`src/changelog/LOG4J2-3556_JsonTemplateLayout_stack_trace_truncation_fix.xml` file contents
 [source,xml]
 ----
-<entry type="fixed">
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="fixed">
   <issue id="LOG4J2-3556" link="https://issues.apache.org/jira/browse/LOG4J2-3556"/>
   <author id="vy"/>
   <author name="Arthur Gavlyukovskiy"/>
diff --git a/log4j-changelog/pom.xml b/log4j-changelog/pom.xml
index 6e336be..53f0d77 100644
--- a/log4j-changelog/pom.xml
+++ b/log4j-changelog/pom.xml
@@ -43,6 +43,18 @@
       <artifactId>freemarker</artifactId>
     </dependency>
 
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.assertj</groupId>
+      <artifactId>assertj-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+
   </dependencies>
 
 </project>
diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/ChangelogEntry.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/ChangelogEntry.java
index f31d36a..88a42f2 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/ChangelogEntry.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/ChangelogEntry.java
@@ -112,12 +112,10 @@ public final class ChangelogEntry {
     }
 
     public void writeToXmlFile(final Path path) {
-        XmlWriter.toFile(path, document -> {
+        XmlWriter.toFile(path, "entry", (document, entryElement) -> {
 
             // Create the `entry` root element
-            final Element entryElement = document.createElement("entry");
             entryElement.setAttribute("type", type.toXmlAttribute());
-            document.appendChild(entryElement);
 
             // Create the `issue` elements
             issues.forEach(issue -> {
diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/ChangelogRelease.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/ChangelogRelease.java
index 2369ba7..b33765b 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/ChangelogRelease.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/ChangelogRelease.java
@@ -35,11 +35,9 @@ public final class ChangelogRelease {
     }
 
     public void writeToXmlFile(final Path path) {
-        XmlWriter.toFile(path, document -> {
-            final Element releaseElement = document.createElement("release");
+        XmlWriter.toFile(path, "release", (document, releaseElement) -> {
             releaseElement.setAttribute("version", version);
             releaseElement.setAttribute("date", date);
-            document.appendChild(releaseElement);
         });
     }
 
diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/importer/MavenChangesImporter.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/importer/MavenChangesImporter.java
index 318f0c9..33074f8 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/importer/MavenChangesImporter.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/importer/MavenChangesImporter.java
@@ -32,6 +32,10 @@ public final class MavenChangesImporter {
 
     public static void main(final String[] mainArgs) {
         final MavenChangesImporterArgs args = MavenChangesImporterArgs.fromSystemProperties();
+        performImport(args);
+    }
+
+    public static void performImport(final MavenChangesImporterArgs args) {
         final MavenChanges mavenChanges = MavenChanges.readFromFile(args.changesXmlFile);
         mavenChanges.releases.forEach(release -> {
             if ("TBD".equals(release.date)) {
@@ -81,11 +85,14 @@ public final class MavenChangesImporter {
         }
         final String sanitizedDescription = action
                 .description
-                .substring(0, Math.min(action.description.length(), 60))
                 .replaceAll("[^A-Za-z0-9]", "_")
                 .replaceAll("_+", "_")
-                .replaceAll("[^A-Za-z0-9]$", "");
-        actionRelativeFileBuilder.append(sanitizedDescription);
+                .replaceAll("^[^A-Za-z0-9]*", "")
+                .replaceAll("[^A-Za-z0-9]*$", "");
+        final String shortenedSanitizedDescription = sanitizedDescription.length() > 60
+                ? sanitizedDescription.substring(0, 60)
+                : sanitizedDescription;
+        actionRelativeFileBuilder.append(shortenedSanitizedDescription);
         actionRelativeFileBuilder.append(".xml");
         return actionRelativeFileBuilder.toString();
     }
diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/importer/MavenChangesImporterArgs.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/importer/MavenChangesImporterArgs.java
index fd9f631..515180b 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/importer/MavenChangesImporterArgs.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/importer/MavenChangesImporterArgs.java
@@ -17,11 +17,12 @@
 package org.apache.logging.log4j.changelog.importer;
 
 import java.nio.file.Path;
+import java.util.Objects;
 
 import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBlankIntProperty;
 import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBlankPathProperty;
 
-final class MavenChangesImporterArgs {
+public final class MavenChangesImporterArgs {
 
     public static final String CHANGELOG_DIRECTORY_PROPERTY_NAME = "log4j.changelog.directory";
 
@@ -35,10 +36,26 @@ final class MavenChangesImporterArgs {
 
     final int releaseVersionMajor;
 
-    private MavenChangesImporterArgs(final Path changelogDirectory, final Path changesXmlFile, final int releaseVersionMajor) {
+    public MavenChangesImporterArgs(
+            final Path changelogDirectory,
+            final Path changesXmlFile,
+            final int releaseVersionMajor) {
+
+        // Check arguments
+        Objects.requireNonNull(changelogDirectory, "changelogDirectory");
+        Objects.requireNonNull(changesXmlFile, "changesXmlFile");
+        if (releaseVersionMajor < 0) {
+            final String message = String.format(
+                    "was expecting `releaseVersionMajor >= 0`, found: %d",
+                    releaseVersionMajor);
+            throw new IllegalArgumentException(message);
+        }
+
+        // Set fields
         this.changelogDirectory = changelogDirectory;
         this.changesXmlFile = changesXmlFile;
         this.releaseVersionMajor = releaseVersionMajor;
+
     }
 
     static MavenChangesImporterArgs fromSystemProperties() {
diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/util/StringUtils.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/util/StringUtils.java
index 1a084c2..ea5953a 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/util/StringUtils.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/util/StringUtils.java
@@ -31,4 +31,17 @@ public final class StringUtils {
         return input == null || input.matches("\\s*");
     }
 
+    public static String repeat(final String input, final int count) {
+        if (count < 0) {
+            final String message = String.format("was expecting `count >= 0`, found: %d", count);
+            throw new IllegalArgumentException(message);
+        }
+        final int length = Math.multiplyExact(input.length(), count);
+        final StringBuilder stringBuilder = new StringBuilder(length);
+        for (int i = 0; i < count; i++) {
+            stringBuilder.append(input);
+        }
+        return stringBuilder.toString();
+    }
+
 }
diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/util/XmlUtils.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/util/XmlUtils.java
index 0a9ad6a..a438442 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/util/XmlUtils.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/util/XmlUtils.java
@@ -16,18 +16,36 @@
  */
 package org.apache.logging.log4j.changelog.util;
 
+import javax.xml.XMLConstants;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+
+import java.io.InputStream;
 
 final class XmlUtils {
 
+    static final String XML_NAMESPACE = "http://logging.apache.org/log4j/changelog";
+
+    static final String XML_SCHEMA_LOCATION = "https://logging.apache.org/log4j/changelog-0.1.0.xsd";
+
     private XmlUtils() {}
 
+    static DocumentBuilderFactory createDocumentBuilderFactory() {
+        final DocumentBuilderFactory dbf = createSecureDocumentBuilderFactory();
+        final Schema schema = readSchema();
+        dbf.setSchema(schema);
+        dbf.setValidating(true);
+        return dbf;
+    }
+
     /**
      * @return a {@link DocumentBuilderFactory} instance configured with certain XXE protection measures
      * @see <a href="https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html#jaxp-documentbuilderfactory-saxparserfactory-and-dom4j">XML External Entity Prevention Cheat Sheet</a>
      */
-    static DocumentBuilderFactory createDocumentBuilderFactory() {
+    private static DocumentBuilderFactory createSecureDocumentBuilderFactory() {
         final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
         String feature = null;
         try {
@@ -68,4 +86,26 @@ final class XmlUtils {
         return dbf;
     }
 
+    private static Schema readSchema() {
+
+        // Read the schema file resource
+        final String schemaFileName = "/log4j-changelog.xsd";
+        final InputStream schemaInputStream = XmlUtils.class.getResourceAsStream(schemaFileName);
+        if (schemaInputStream == null) {
+            final String message = String.format("could not find the schema file resource: `%s`", schemaFileName);
+            throw new RuntimeException(message);
+        }
+
+        // Read the schema
+        try {
+            final StreamSource schemaSource = new StreamSource(schemaInputStream);
+            final SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+            return schemaFactory.newSchema(schemaSource);
+        } catch (final Exception error) {
+            final String message = String.format("failed to load schema from file resource: `%s`", schemaFileName);
+            throw new RuntimeException(message, error);
+        }
+
+    }
+
 }
diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/util/XmlWriter.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/util/XmlWriter.java
index 7577ed5..3af34c4 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/util/XmlWriter.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/util/XmlWriter.java
@@ -20,7 +20,7 @@ import java.io.StringWriter;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.StandardOpenOption;
-import java.util.function.Consumer;
+import java.util.function.BiConsumer;
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
@@ -34,14 +34,18 @@ import edu.umd.cs.findbugs.annotations.Nullable;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import org.w3c.dom.Comment;
 import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 public final class XmlWriter {
 
     private XmlWriter() {}
 
-    public static void toFile(final Path filepath, final Consumer<Document> documentConsumer) {
+    public static void toFile(
+            final Path filepath,
+            final String rootElementName,
+            final BiConsumer<Document, Element> documentConsumer) {
         try {
-            final String xml = toString(documentConsumer);
+            final String xml = toString(rootElementName, documentConsumer);
             final byte[] xmlBytes = xml.getBytes(CharsetUtils.CHARSET);
             @Nullable
             final Path filepathParent = filepath.getParent();
@@ -55,7 +59,7 @@ public final class XmlWriter {
         }
     }
 
-    public static String toString(final Consumer<Document> documentConsumer) {
+    public static String toString(final String rootElementName, final BiConsumer<Document, Element> documentConsumer) {
         try {
 
             // Create the document
@@ -66,28 +70,35 @@ public final class XmlWriter {
             final Document document = documentBuilder.newDocument();
             document.setXmlStandalone(true);
             final Comment licenseComment = document.createComment("\n" +
-                    "   Licensed to the Apache Software Foundation (ASF) under one or more\n" +
-                    "   contributor license agreements.  See the NOTICE file distributed with\n" +
-                    "   this work for additional information regarding copyright ownership.\n" +
-                    "   The ASF licenses this file to You under the Apache License, Version 2.0\n" +
-                    "   (the \"License\"); you may not use this file except in compliance with\n" +
-                    "   the License.  You may obtain a copy of the License at\n" +
+                    "  Licensed to the Apache Software Foundation (ASF) under one or more\n" +
+                    "  contributor license agreements. See the NOTICE file distributed with\n" +
+                    "  this work for additional information regarding copyright ownership.\n" +
+                    "  The ASF licenses this file to You under the Apache License, Version 2.0\n" +
+                    "  (the \"License\"); you may not use this file except in compliance with\n" +
+                    "  the License. You may obtain a copy of the License at\n" +
                     "\n" +
-                    "       http://www.apache.org/licenses/LICENSE-2.0\n" +
+                    "      https://www.apache.org/licenses/LICENSE-2.0\n" +
                     "\n" +
-                    "   Unless required by applicable law or agreed to in writing, software\n" +
-                    "   distributed under the License is distributed on an \"AS IS\" BASIS,\n" +
-                    "   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" +
-                    "   See the License for the specific language governing permissions and\n" +
-                    "   limitations under the License." +
+                    "  Unless required by applicable law or agreed to in writing, software\n" +
+                    "  distributed under the License is distributed on an \"AS IS\" BASIS,\n" +
+                    "  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" +
+                    "  See the License for the specific language governing permissions and\n" +
+                    "  limitations under the License." +
                     "\n");
             document.appendChild(licenseComment);
 
-            // Execute request changes
-            documentConsumer.accept(document);
+            // Create the root element
+            final Element rootElement = document.createElement(rootElementName);
+            document.appendChild(rootElement);
+
+            // Apply requested changes
+            documentConsumer.accept(document, rootElement);
+//            rootElement.setAttribute("xmlns", XmlUtils.XML_NAMESPACE);
+//            rootElement.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
+//            rootElement.setAttribute("xsi:schemaLocation", XmlUtils.XML_NAMESPACE + " "+ XmlUtils.XML_SCHEMA_LOCATION);
 
             // Serialize the document
-            return serializeXmlDocument(document);
+            return serializeXmlDocument(document, rootElementName);
 
         } catch (final Exception error) {
             throw new RuntimeException("failed writing XML", error);
@@ -95,7 +106,8 @@ public final class XmlWriter {
     }
 
     @SuppressFBWarnings({"XXE_DTD_TRANSFORM_FACTORY", "XXE_XSLT_TRANSFORM_FACTORY"})
-    private static String serializeXmlDocument(final Document document) throws Exception {
+    private static String serializeXmlDocument(final Document document, final String rootElementName) throws Exception {
+
         final Transformer transformer = TransformerFactory.newInstance().newTransformer();
         final StreamResult result = new StreamResult(new StringWriter());
         final DOMSource source = new DOMSource(document);
@@ -103,10 +115,20 @@ public final class XmlWriter {
         transformer.setOutputProperty(OutputKeys.INDENT, "yes");
         transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
         transformer.transform(source, result);
-        return result.getWriter().toString()
-                // Life is too short to solve DOM transformer issues decently
+
+        // Life is too short to solve DOM transformer issues decently
+        final String xml = result.getWriter().toString();
+        final String padding = StringUtils.repeat(" ", rootElementName.length() + 2);
+        return xml
                 .replace("?><!--", "?>\n<!--")
-                .replace("--><", "-->\n<");
+                .replace("--><", "-->\n<")
+                .replaceFirst(
+                        '<' + rootElementName + " (.+>\n)",
+                        ('<' + rootElementName + " xmlns=\"" + XmlUtils.XML_NAMESPACE + "\"\n" +
+                                padding + "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
+                                padding + "xsi:schemaLocation=\"" + XmlUtils.XML_NAMESPACE + " "+ XmlUtils.XML_SCHEMA_LOCATION + "\"\n" +
+                                padding + "$1"));
+
     }
 
 }
diff --git a/log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/FileTestUtils.java b/log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/FileTestUtils.java
new file mode 100644
index 0000000..d67ff40
--- /dev/null
+++ b/log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/FileTestUtils.java
@@ -0,0 +1,75 @@
+/*
+ * 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.
+ */
+package org.apache.logging.log4j.changelog;
+
+import java.io.IOException;
+import java.io.UncheckedIOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+final class FileTestUtils {
+
+    private FileTestUtils() {}
+
+    static void assertDirectoryContentMatches(final Path actualPath, final Path expectedPath) {
+
+        // Compare file paths
+        final Map<String, Path> actualContents = directoryContents(actualPath);
+        final Map<String, Path> expectedContents = directoryContents(expectedPath);
+        final Set<String> relativeFilePaths = expectedContents.keySet();
+        assertThat(actualContents).containsOnlyKeys(relativeFilePaths);
+
+        // Compare file contents
+        relativeFilePaths.forEach(relativeFilePath -> {
+            final Path actualFilePath = actualContents.get(relativeFilePath);
+            final Path expectedFilePath = expectedContents.get(relativeFilePath);
+            if (!Files.isDirectory(actualFilePath) || !Files.isDirectory(expectedFilePath)) {
+                assertThat(actualFilePath).hasSameTextualContentAs(expectedFilePath, StandardCharsets.UTF_8);
+            }
+        });
+
+    }
+
+    private static Map<String, Path> directoryContents(final Path root) {
+        final int rootPathLength = root.toAbsolutePath().toString().length();
+        try (final Stream<Path> paths = Files.walk(root)) {
+            return paths
+                    .filter(path -> !root.equals(path))
+                    .collect(Collectors.toMap(
+                            path -> path.toAbsolutePath().toString().substring(rootPathLength + 1),
+                            Function.identity(),
+                            (oldPath, newPath) -> {
+                                final String message = String.format(
+                                        "paths `%s` and `%s` have conflicting keys",
+                                        oldPath, newPath);
+                                throw new IllegalStateException(message);
+                            },
+                            TreeMap::new));
+        } catch (final IOException error) {
+            final String message = String.format("failed walking directory: `%s`", root);
+            throw new UncheckedIOException(message, error);
+        }
+    }
+
+}
diff --git a/log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/MavenChangesImporterTest.java b/log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/MavenChangesImporterTest.java
new file mode 100644
index 0000000..ffaef0d
--- /dev/null
+++ b/log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/MavenChangesImporterTest.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.changelog;
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import org.apache.logging.log4j.changelog.importer.MavenChangesImporter;
+import org.apache.logging.log4j.changelog.importer.MavenChangesImporterArgs;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.CleanupMode;
+import org.junit.jupiter.api.io.TempDir;
+
+import static org.apache.logging.log4j.changelog.FileTestUtils.assertDirectoryContentMatches;
+
+class MavenChangesImporterTest {
+
+    @Test
+    void output_should_match(@TempDir(cleanup = CleanupMode.ON_SUCCESS) final Path changelogDirectory) {
+        final MavenChangesImporterArgs args = new MavenChangesImporterArgs(
+                changelogDirectory,
+                Paths.get("src/test/resources/1-changes.xml"),
+                2);
+        MavenChangesImporter.performImport(args);
+        assertDirectoryContentMatches(changelogDirectory, Paths.get("src/test/resources/2-imported"));
+    }
+
+}
diff --git a/log4j-changelog/src/test/resources/1-changes.xml b/log4j-changelog/src/test/resources/1-changes.xml
new file mode 100644
index 0000000..3a17e7c
--- /dev/null
+++ b/log4j-changelog/src/test/resources/1-changes.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<document xmlns="http://maven.apache.org/changes/1.0.0"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
+
+  <properties>
+    <title>Changes</title>
+  </properties>
+
+  <body>
+
+    <release version="2.19.0" date="TBD" description="GA Release 2.19.0">
+
+      <action issue="LOG4J2-3584" dev="vy" type="fix">
+        Make `StatusConsoleListener` use `SimpleLogger` internally
+      </action>
+
+      <action issue="LOG4J2-3614" dev="vy" type="fix" due-to="strainu">
+        Harden `InstantFormatter` against delegate failures
+      </action>
+
+      <action issue="LOG4J2-3572" dev="rgoers" type="update">
+        Add `getExplicitLevel` method to `LoggerConfig`
+      </action>
+
+    </release>
+
+    <release version="2.18.0" date="2022-06-28" description="GA Release 2.18.0">
+
+      <action issue="LOG4J2-3339" dev="rgoers" type="fix">
+        `DirectWriteRolloverStrategy` should use the current time when creating files
+      </action>
+
+      <action issue="LOG4J2-3527" dev="rgoers" type="add">
+        Don't use `Paths.get()` to avoid circular file systems
+      </action>
+
+      <action issue="LOG4J2-3490" dev="rgoers" type="remove">
+        The `DirectWriteRolloverStrategy` was not detecting the correct index to use during startup
+      </action>
+
+    </release>
+
+    <release version="2.17.2" date="2022-02-23" description="GA Release 2.17.2">
+
+      <action issue="LOG4J2-3304" dev="rgoers" type="fix" due-to="francis-FY">
+        Flag `LogManager` as initialized if the `LoggerFactory` is provided as a property
+      </action>
+
+      <action issue="LOG4J2-3405" dev="rgoers" type="remove">
+        Document that the Spring Boot Lookup requires the `log4j-spring-boot` dependency
+      </action>
+
+      <action issue="LOG4J2-3333" dev="ckozak" type="remove">
+        Fix `ThreadContextDataInjector` initialization deadlock
+      </action>
+
+    </release>
+
+  </body>
+
+</document>
diff --git a/log4j-changelog/src/test/resources/2-imported/.2.x.x/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml b/log4j-changelog/src/test/resources/2-imported/.2.x.x/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml
new file mode 100644
index 0000000..b135ac2
--- /dev/null
+++ b/log4j-changelog/src/test/resources/2-imported/.2.x.x/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="changed">
+  <issue id="LOG4J2-3572" link="https://issues.apache.org/jira/browse/LOG4J2-3572"/>
+  <author id="rgoers"/>
+  <description format="asciidoc">Add `getExplicitLevel` method to `LoggerConfig`</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/2-imported/.2.x.x/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml b/log4j-changelog/src/test/resources/2-imported/.2.x.x/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml
new file mode 100644
index 0000000..7902947
--- /dev/null
+++ b/log4j-changelog/src/test/resources/2-imported/.2.x.x/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="fixed">
+  <issue id="LOG4J2-3584" link="https://issues.apache.org/jira/browse/LOG4J2-3584"/>
+  <author id="vy"/>
+  <description format="asciidoc">Make `StatusConsoleListener` use `SimpleLogger` internally</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/2-imported/.2.x.x/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml b/log4j-changelog/src/test/resources/2-imported/.2.x.x/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml
new file mode 100644
index 0000000..34111cf
--- /dev/null
+++ b/log4j-changelog/src/test/resources/2-imported/.2.x.x/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="fixed">
+  <issue id="LOG4J2-3614" link="https://issues.apache.org/jira/browse/LOG4J2-3614"/>
+  <author id="vy"/>
+  <author name="strainu"/>
+  <description format="asciidoc">Harden `InstantFormatter` against delegate failures</description>
+</entry>
diff --git a/log4j-changelog/pom.xml b/log4j-changelog/src/test/resources/2-imported/2.17.2/.release.xml
similarity index 52%
copy from log4j-changelog/pom.xml
copy to log4j-changelog/src/test/resources/2-imported/2.17.2/.release.xml
index 6e336be..b46393f 100644
--- a/log4j-changelog/pom.xml
+++ b/log4j-changelog/src/test/resources/2-imported/2.17.2/.release.xml
@@ -15,34 +15,7 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
+<release xmlns="http://logging.apache.org/log4j/changelog"
          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>
-    <artifactId>log4j-tools-parent</artifactId>
-    <groupId>org.apache.logging.log4j</groupId>
-    <version>${revision}</version>
-    <relativePath>../log4j-tools-parent/pom.xml</relativePath>
-  </parent>
-
-  <artifactId>log4j-changelog</artifactId>
-
-  <dependencies>
-
-    <dependency>
-      <groupId>com.github.spotbugs</groupId>
-      <artifactId>spotbugs-annotations</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.freemarker</groupId>
-      <artifactId>freemarker</artifactId>
-    </dependency>
-
-  </dependencies>
-
-</project>
+         xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+         date="2022-02-23" version="2.17.2"/>
diff --git a/log4j-changelog/src/test/resources/2-imported/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml b/log4j-changelog/src/test/resources/2-imported/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml
new file mode 100644
index 0000000..242b03e
--- /dev/null
+++ b/log4j-changelog/src/test/resources/2-imported/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="fixed">
+  <issue id="LOG4J2-3304" link="https://issues.apache.org/jira/browse/LOG4J2-3304"/>
+  <author id="rgoers"/>
+  <author name="francis-FY"/>
+  <description format="asciidoc">Flag `LogManager` as initialized if the `LoggerFactory` is provided as a property</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/2-imported/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml b/log4j-changelog/src/test/resources/2-imported/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml
new file mode 100644
index 0000000..cb4ea04
--- /dev/null
+++ b/log4j-changelog/src/test/resources/2-imported/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="removed">
+  <issue id="LOG4J2-3333" link="https://issues.apache.org/jira/browse/LOG4J2-3333"/>
+  <author id="ckozak"/>
+  <description format="asciidoc">Fix `ThreadContextDataInjector` initialization deadlock</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/2-imported/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml b/log4j-changelog/src/test/resources/2-imported/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml
new file mode 100644
index 0000000..6b213cb
--- /dev/null
+++ b/log4j-changelog/src/test/resources/2-imported/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="removed">
+  <issue id="LOG4J2-3405" link="https://issues.apache.org/jira/browse/LOG4J2-3405"/>
+  <author id="rgoers"/>
+  <description format="asciidoc">Document that the Spring Boot Lookup requires the `log4j-spring-boot` dependency</description>
+</entry>
diff --git a/log4j-changelog/pom.xml b/log4j-changelog/src/test/resources/2-imported/2.18.0/.release.xml
similarity index 52%
copy from log4j-changelog/pom.xml
copy to log4j-changelog/src/test/resources/2-imported/2.18.0/.release.xml
index 6e336be..2f7068a 100644
--- a/log4j-changelog/pom.xml
+++ b/log4j-changelog/src/test/resources/2-imported/2.18.0/.release.xml
@@ -15,34 +15,7 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
+<release xmlns="http://logging.apache.org/log4j/changelog"
          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>
-    <artifactId>log4j-tools-parent</artifactId>
-    <groupId>org.apache.logging.log4j</groupId>
-    <version>${revision}</version>
-    <relativePath>../log4j-tools-parent/pom.xml</relativePath>
-  </parent>
-
-  <artifactId>log4j-changelog</artifactId>
-
-  <dependencies>
-
-    <dependency>
-      <groupId>com.github.spotbugs</groupId>
-      <artifactId>spotbugs-annotations</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.freemarker</groupId>
-      <artifactId>freemarker</artifactId>
-    </dependency>
-
-  </dependencies>
-
-</project>
+         xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+         date="2022-06-28" version="2.18.0"/>
diff --git a/log4j-changelog/src/test/resources/2-imported/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml b/log4j-changelog/src/test/resources/2-imported/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml
new file mode 100644
index 0000000..8490b36
--- /dev/null
+++ b/log4j-changelog/src/test/resources/2-imported/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="fixed">
+  <issue id="LOG4J2-3339" link="https://issues.apache.org/jira/browse/LOG4J2-3339"/>
+  <author id="rgoers"/>
+  <description format="asciidoc">`DirectWriteRolloverStrategy` should use the current time when creating files</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/2-imported/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml b/log4j-changelog/src/test/resources/2-imported/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml
new file mode 100644
index 0000000..c60d17b
--- /dev/null
+++ b/log4j-changelog/src/test/resources/2-imported/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="removed">
+  <issue id="LOG4J2-3490" link="https://issues.apache.org/jira/browse/LOG4J2-3490"/>
+  <author id="rgoers"/>
+  <description format="asciidoc">The `DirectWriteRolloverStrategy` was not detecting the correct index to use during startup</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/2-imported/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml b/log4j-changelog/src/test/resources/2-imported/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml
new file mode 100644
index 0000000..d7e296b
--- /dev/null
+++ b/log4j-changelog/src/test/resources/2-imported/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="added">
+  <issue id="LOG4J2-3527" link="https://issues.apache.org/jira/browse/LOG4J2-3527"/>
+  <author id="rgoers"/>
+  <description format="asciidoc">Don't use `Paths.get()` to avoid circular file systems</description>
+</entry>
diff --git a/log4j-tools-parent/pom.xml b/log4j-tools-parent/pom.xml
index 671e311..c2dbf46 100644
--- a/log4j-tools-parent/pom.xml
+++ b/log4j-tools-parent/pom.xml
@@ -52,7 +52,9 @@
     <maven.site.deploy.skip>true</maven.site.deploy.skip>
 
     <!-- dependency versions -->
+    <assertj.version>3.24.0</assertj.version>
     <freemarker.version>2.3.32</freemarker.version>
+    <junit.version>5.9.2</junit.version>
     <maven-plugin.version>3.7.1</maven-plugin.version>
     <maven-plugin-api.version>3.8.7</maven-plugin-api.version>
     <spotbugs.version>4.7.3</spotbugs.version>
@@ -68,12 +70,24 @@
   <dependencyManagement>
     <dependencies>
 
+      <dependency>
+        <groupId>org.assertj</groupId>
+        <artifactId>assertj-core</artifactId>
+        <version>${assertj.version}</version>
+      </dependency>
+
       <dependency>
         <groupId>org.freemarker</groupId>
         <artifactId>freemarker</artifactId>
         <version>${freemarker.version}</version>
       </dependency>
 
+      <dependency>
+        <groupId>org.junit.jupiter</groupId>
+        <artifactId>junit-jupiter-engine</artifactId>
+        <version>${junit.version}</version>
+      </dependency>
+
       <dependency>
         <groupId>org.apache.maven.plugin-tools</groupId>
         <artifactId>maven-plugin-annotations</artifactId>


[logging-log4j-tools] 05/07: Add tests for `ChangelogExporter`

Posted by vy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git

commit 4bdd635a9a32fdbb5718e2074abcaa069e62ff0a
Author: Volkan Yazıcı <vo...@yazi.ci>
AuthorDate: Wed Jan 25 15:15:33 2023 +0100

    Add tests for `ChangelogExporter`
---
 .../changelog/exporter/ChangelogExporter.java      |  3 +-
 .../changelog/exporter/ChangelogExporterArgs.java  |  7 +--
 .../log4j/changelog/ChangelogExporterTest.java     | 42 ++++++++++++++++
 .../3-enriched/.2.x.x/.changelog.adoc.ftl          | 22 +++++++++
 ...Add_getExplicitLevel_method_to_LoggerConfig.xml |  1 +
 ...ConsoleListener_use_SimpleLogger_internally.xml |  1 +
 ..._InstantFormatter_against_delegate_failures.xml |  1 +
 .../3-enriched/.3.x.x/.changelog.adoc.ftl          | 22 +++++++++
 .../.3.x.x/1220_Simplify_site_generation.xml       | 25 ++++++++++
 .../1221_switch_from_jira_to_github_issues.xml     | 25 ++++++++++
 ...notation_to_support_plugin_ordering_when_tw.xml | 27 +++++++++++
 .../3-enriched/.changelog-entries.adoc.ftl         | 48 +++++++++++++++++++
 .../src/test/resources/3-enriched/.index.adoc.ftl  | 22 +++++++++
 .../3-enriched/2.17.2/.changelog.adoc.ftl          | 47 ++++++++++++++++++
 .../test/resources/3-enriched/2.17.2/.release.xml  |  1 +
 ...s_initialized_if_the_LoggerFactory_is_provi.xml |  1 +
 ...ContextDataInjector_initialization_deadlock.xml |  1 +
 ..._Spring_Boot_Lookup_requires_the_log4j_spri.xml |  1 +
 .../3-enriched/2.18.0/.changelog.adoc.ftl          | 36 ++++++++++++++
 .../test/resources/3-enriched/2.18.0/.release.xml  |  1 +
 ...erStrategy_should_use_the_current_time_when.xml |  1 +
 ...lloverStrategy_was_not_detecting_the_correc.xml |  1 +
 ...se_Paths_get_to_avoid_circular_file_systems.xml |  1 +
 .../src/test/resources/4-exported/2.17.2.adoc      | 56 ++++++++++++++++++++++
 .../src/test/resources/4-exported/2.18.0.adoc      | 48 +++++++++++++++++++
 .../src/test/resources/4-exported/2.x.x.adoc       | 31 ++++++++++++
 .../src/test/resources/4-exported/3.x.x.adoc       | 31 ++++++++++++
 .../src/test/resources/4-exported/index.adoc       | 23 +++++++++
 28 files changed, 522 insertions(+), 4 deletions(-)

diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
index 01f7637..41d0021 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
@@ -34,7 +34,8 @@ public final class ChangelogExporter {
     private ChangelogExporter() {}
 
     public static void main(final String[] mainArgs) {
-        performExport(ChangelogExporterArgs.fromSystemProperties());
+        final ChangelogExporterArgs args = ChangelogExporterArgs.fromSystemProperties();
+        performExport(args);
     }
 
     public static void performExport(final ChangelogExporterArgs args) {
diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
index 8073e4e..5f25950 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
@@ -17,6 +17,7 @@
 package org.apache.logging.log4j.changelog.exporter;
 
 import java.nio.file.Path;
+import java.util.Objects;
 
 import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBlankPathProperty;
 
@@ -30,9 +31,9 @@ public final class ChangelogExporterArgs {
 
     final Path outputDirectory;
 
-    private ChangelogExporterArgs(final Path changelogDirectory, final Path outputDirectory) {
-        this.changelogDirectory = changelogDirectory;
-        this.outputDirectory = outputDirectory;
+    public ChangelogExporterArgs(final Path changelogDirectory, final Path outputDirectory) {
+        this.changelogDirectory = Objects.requireNonNull(changelogDirectory, "changelogDirectory");
+        this.outputDirectory = Objects.requireNonNull(outputDirectory, "outputDirectory");
     }
 
     static ChangelogExporterArgs fromSystemProperties() {
diff --git a/log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/ChangelogExporterTest.java b/log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/ChangelogExporterTest.java
new file mode 100644
index 0000000..f015bd1
--- /dev/null
+++ b/log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/ChangelogExporterTest.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.changelog;
+
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import org.apache.logging.log4j.changelog.exporter.ChangelogExporter;
+import org.apache.logging.log4j.changelog.exporter.ChangelogExporterArgs;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.CleanupMode;
+import org.junit.jupiter.api.io.TempDir;
+
+import static org.apache.logging.log4j.changelog.FileTestUtils.assertDirectoryContentMatches;
+
+class ChangelogExporterTest {
+
+    @Test
+    void output_should_match(@TempDir(cleanup = CleanupMode.ON_SUCCESS) final Path outputDirectory) {
+        ChangelogExporterArgs args = new ChangelogExporterArgs(
+                Paths.get("src/test/resources/3-enriched"),
+                outputDirectory);
+        ChangelogExporter.performExport(args);
+        assertDirectoryContentMatches(outputDirectory, Paths.get("src/test/resources/4-exported"));
+    }
+
+}
diff --git a/log4j-changelog/src/test/resources/3-enriched/.2.x.x/.changelog.adoc.ftl b/log4j-changelog/src/test/resources/3-enriched/.2.x.x/.changelog.adoc.ftl
new file mode 100644
index 0000000..55dd1ed
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/.2.x.x/.changelog.adoc.ftl
@@ -0,0 +1,22 @@
+////
+    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.
+////
+
+= ${release.version}<#if release.date?has_content> (${release.date})</#if>
+
+Changes staged for the next 2.x.x version that is yet to be released.
+
+<#include "../.changelog-entries.adoc.ftl">
diff --git a/log4j-changelog/src/test/resources/3-enriched/.2.x.x/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml b/log4j-changelog/src/test/resources/3-enriched/.2.x.x/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml
new file mode 120000
index 0000000..94aefd0
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/.2.x.x/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml
@@ -0,0 +1 @@
+../../2-imported/.2.x.x/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml
\ No newline at end of file
diff --git a/log4j-changelog/src/test/resources/3-enriched/.2.x.x/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml b/log4j-changelog/src/test/resources/3-enriched/.2.x.x/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml
new file mode 120000
index 0000000..f6f9563
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/.2.x.x/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml
@@ -0,0 +1 @@
+../../2-imported/.2.x.x/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml
\ No newline at end of file
diff --git a/log4j-changelog/src/test/resources/3-enriched/.2.x.x/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml b/log4j-changelog/src/test/resources/3-enriched/.2.x.x/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml
new file mode 120000
index 0000000..1fc02fc
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/.2.x.x/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml
@@ -0,0 +1 @@
+../../2-imported/.2.x.x/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml
\ No newline at end of file
diff --git a/log4j-changelog/src/test/resources/3-enriched/.3.x.x/.changelog.adoc.ftl b/log4j-changelog/src/test/resources/3-enriched/.3.x.x/.changelog.adoc.ftl
new file mode 100644
index 0000000..b2d69db
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/.3.x.x/.changelog.adoc.ftl
@@ -0,0 +1,22 @@
+////
+    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.
+////
+
+= ${release.version}<#if release.date?has_content> (${release.date})</#if>
+
+Changes staged for the next 3.x.x version that is yet to be released.
+
+<#include "../.changelog-entries.adoc.ftl">
diff --git a/log4j-changelog/src/test/resources/3-enriched/.3.x.x/1220_Simplify_site_generation.xml b/log4j-changelog/src/test/resources/3-enriched/.3.x.x/1220_Simplify_site_generation.xml
new file mode 100644
index 0000000..81f353c
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/.3.x.x/1220_Simplify_site_generation.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="changed">
+  <issue id="1220" link="https://github.com/apache/logging-log4j2/pull/1220"/>
+  <author id="vy"/>
+  <description format="asciidoc">Simplify Maven `site` phase and align it with the one in `release-2.x` branch</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/3-enriched/.3.x.x/1221_switch_from_jira_to_github_issues.xml b/log4j-changelog/src/test/resources/3-enriched/.3.x.x/1221_switch_from_jira_to_github_issues.xml
new file mode 100644
index 0000000..333a109
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/.3.x.x/1221_switch_from_jira_to_github_issues.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="changed">
+  <issue id="1221" link="https://github.com/apache/logging-log4j2/pull/1221"/>
+  <author id="vy"/>
+  <description format="asciidoc">Switch the issue tracker from https://issues.apache.org/jira/browse/LOG4J2[JIRA] to https://github.com/apache/logging-log4j2/issues[GitHub Issues]</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/3-enriched/.3.x.x/LOG4J2-857_Add_Ordered_annotation_to_support_plugin_ordering_when_tw.xml b/log4j-changelog/src/test/resources/3-enriched/.3.x.x/LOG4J2-857_Add_Ordered_annotation_to_support_plugin_ordering_when_tw.xml
new file mode 100644
index 0000000..ce50aa7
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/.3.x.x/LOG4J2-857_Add_Ordered_annotation_to_support_plugin_ordering_when_tw.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="added">
+  <issue id="LOG4J2-857" link="https://issues.apache.org/jira/browse/LOG4J2-857"/>
+  <author id="mattsicker"/>
+  <description format="asciidoc">
+    Add `@Ordered` annotation to support plugin ordering when two or more plugins within the same category have the same case-insensitive name
+  </description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/3-enriched/.changelog-entries.adoc.ftl b/log4j-changelog/src/test/resources/3-enriched/.changelog-entries.adoc.ftl
new file mode 100644
index 0000000..a8c18e8
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/.changelog-entries.adoc.ftl
@@ -0,0 +1,48 @@
+<#--
+  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.
+-->
+<#if entriesByType?size gt 0>== Changes
+<#list entriesByType as entryType, entries>
+
+== ${entryType?capitalize}
+
+<#list entries as entry>
+* ${entry.description.text?replace("\\s+", " ", "r")} (for <@compress single_line=true>
+<#list entry.issues as issue>${issue.link}[${issue.id}]<#if issue?has_next>, </#if></#list> by
+<#list entry.authors as author>
+<@compress single_line=true>
+<#if !author.id?has_content>${author.name}
+<#elseif author.id == "rgoers">Ralph Goers
+<#elseif author.id == "ggregory">Gary Gregory
+<#elseif author.id == "sdeboy">Scott Deboy
+<#elseif author.id == "rpopma">Remko Popma
+<#elseif author.id == "nickwilliams">Nick Williams
+<#elseif author.id == "mattsicker">Matt Sicker
+<#elseif author.id == "bbrouwer">Bruce Brouwer
+<#elseif author.id == "rgupta">Raman Gupta
+<#elseif author.id == "mikes">Mikael Ståldal
+<#elseif author.id == "ckozak">Carter Kozak
+<#elseif author.id == "vy">Volkan Yazıcı
+<#elseif author.id == "rgrabowski">Ron Grabowski
+<#elseif author.id == "pkarwasz">Piotr P. Karwasz
+<#else>`${author.id}`
+</#if>
+</...@compress><#if author?has_next>, </#if>
+</#list>
+</...@compress>)
+</#list>
+</#list>
+</#if>
diff --git a/log4j-changelog/src/test/resources/3-enriched/.index.adoc.ftl b/log4j-changelog/src/test/resources/3-enriched/.index.adoc.ftl
new file mode 100644
index 0000000..e6e82ba
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/.index.adoc.ftl
@@ -0,0 +1,22 @@
+////
+    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.
+////
+
+= Release changelogs
+
+<#list releases as release>
+* xref:${release.changelogFileName}[${release.version}]<#if release.date?has_content> (${release.date})</#if>
+</#list>
diff --git a/log4j-changelog/src/test/resources/3-enriched/2.17.2/.changelog.adoc.ftl b/log4j-changelog/src/test/resources/3-enriched/2.17.2/.changelog.adoc.ftl
new file mode 100644
index 0000000..d32f334
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/2.17.2/.changelog.adoc.ftl
@@ -0,0 +1,47 @@
+////
+    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.
+////
+
+= ${release.version}<#if release.date?has_content> (${release.date})</#if>
+
+This release contains the changes noted below:
+
+* Over 50 improvements and fixes to the Log4j 1.x support.
+Continued testing has shown it is a suitable replacement for Log4j 1.x in most cases.
+* Scripting now requires a system property be specified naming the languages the user wishes to allow.
+The scripting engine will not load if the property isn't set.
+* By default, the only remote protocol allowed for loading configuration files is HTTPS.
+Users can specify a system property to allow others or prevent remote loading entirely.
+* Variable resolution has been modified so that only properties defined as properties in the configuration file can be recursive.
+All other Lookups are now non-recursive.
+This addresses issues users were having resolving lookups specified in property definitions for use in the `RoutingAppender` and `RollingFileAppender` due to restrictions put in place in 2.17.1.
+* Many other fixes and improvements.
+
+Due to a break in compatibility in the SLF4J binding, Log4j now ships with two versions of the SLF4J to Log4j adapters.
+`log4j-slf4j-impl` should be used with SLF4J 1.7.x and earlier and `log4j-slf4j18-impl` should be used with SLF4J 1.8.x and later.
+SLF4J-2.0.0 alpha releases are not fully supported.
+See https://issues.apache.org/jira/browse/LOG4J2-2975[LOG4J2-2975] and https://jira.qos.ch/browse/SLF4J-511[SLF4J-511].
+
+The Log4j 2.17.2 API, as well as many core components, maintains binary compatibility with previous releases.
+
+Apache Log4j 2.17.2 requires a minimum of Java 8 to build and run.
+Log4j 2.12.4 is the last release to support Java 7.
+Log4j 2.3.2 is the last release to support Java 6.
+Java 6 and Java 7 are no longer supported by the Log4j team.
+
+For complete information on Apache Log4j 2, including instructions on how to submit bug reports, patches, or suggestions for improvement, see http://logging.apache.org/log4j/2.x/[the Apache Log4j 2 website].
+
+<#include "../.changelog-entries.adoc.ftl">
diff --git a/log4j-changelog/src/test/resources/3-enriched/2.17.2/.release.xml b/log4j-changelog/src/test/resources/3-enriched/2.17.2/.release.xml
new file mode 120000
index 0000000..0a00ebf
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/2.17.2/.release.xml
@@ -0,0 +1 @@
+../../2-imported/2.17.2/.release.xml
\ No newline at end of file
diff --git a/log4j-changelog/src/test/resources/3-enriched/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml b/log4j-changelog/src/test/resources/3-enriched/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml
new file mode 120000
index 0000000..6023bab
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml
@@ -0,0 +1 @@
+../../2-imported/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml
\ No newline at end of file
diff --git a/log4j-changelog/src/test/resources/3-enriched/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml b/log4j-changelog/src/test/resources/3-enriched/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml
new file mode 120000
index 0000000..e1baeec
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml
@@ -0,0 +1 @@
+../../2-imported/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml
\ No newline at end of file
diff --git a/log4j-changelog/src/test/resources/3-enriched/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml b/log4j-changelog/src/test/resources/3-enriched/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml
new file mode 120000
index 0000000..aaf2b20
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml
@@ -0,0 +1 @@
+../../2-imported/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml
\ No newline at end of file
diff --git a/log4j-changelog/src/test/resources/3-enriched/2.18.0/.changelog.adoc.ftl b/log4j-changelog/src/test/resources/3-enriched/2.18.0/.changelog.adoc.ftl
new file mode 100644
index 0000000..5fa0ffa
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/2.18.0/.changelog.adoc.ftl
@@ -0,0 +1,36 @@
+////
+    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.
+////
+
+= ${release.version}<#if release.date?has_content> (${release.date})</#if>
+
+This release primarily contains bug fixes and minor enhancements.
+
+Due to a break in compatibility in the SLF4J binding, Log4j now ships with two versions of the SLF4J to Log4j adapters.
+`log4j-slf4j-impl` should be used with SLF4J 1.7.x and earlier and `log4j-slf4j18-impl` should be used with SLF4J 1.8.x and later.
+SLF4J-2.0.0 alpha releases are not fully supported.
+See https://issues.apache.org/jira/browse/LOG4J2-2975[LOG4J2-2975] and https://jira.qos.ch/browse/SLF4J-511[SLF4J-511].
+
+The Log4j 2.18.0 API, as well as many core components, maintains binary compatibility with previous releases.
+
+Apache Log4j 2.18.0 requires a minimum of Java 8 to build and run.
+Log4j 2.12.4 is the last release to support Java 7.
+Log4j 2.3.2 is the last release to support Java 6.
+Java 6 and Java 7 are no longer supported by the Log4j team.
+
+For complete information on Apache Log4j 2, including instructions on how to submit bug reports, patches, or suggestions for improvement, see http://logging.apache.org/log4j/2.x/[the Apache Log4j 2 website].
+
+<#include "../.changelog-entries.adoc.ftl">
diff --git a/log4j-changelog/src/test/resources/3-enriched/2.18.0/.release.xml b/log4j-changelog/src/test/resources/3-enriched/2.18.0/.release.xml
new file mode 120000
index 0000000..ff01fd8
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/2.18.0/.release.xml
@@ -0,0 +1 @@
+../../2-imported/2.18.0/.release.xml
\ No newline at end of file
diff --git a/log4j-changelog/src/test/resources/3-enriched/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml b/log4j-changelog/src/test/resources/3-enriched/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml
new file mode 120000
index 0000000..8e25b5e
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml
@@ -0,0 +1 @@
+../../2-imported/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml
\ No newline at end of file
diff --git a/log4j-changelog/src/test/resources/3-enriched/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml b/log4j-changelog/src/test/resources/3-enriched/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml
new file mode 120000
index 0000000..263b55e
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml
@@ -0,0 +1 @@
+../../2-imported/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml
\ No newline at end of file
diff --git a/log4j-changelog/src/test/resources/3-enriched/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml b/log4j-changelog/src/test/resources/3-enriched/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml
new file mode 120000
index 0000000..a3fd710
--- /dev/null
+++ b/log4j-changelog/src/test/resources/3-enriched/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml
@@ -0,0 +1 @@
+../../2-imported/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml
\ No newline at end of file
diff --git a/log4j-changelog/src/test/resources/4-exported/2.17.2.adoc b/log4j-changelog/src/test/resources/4-exported/2.17.2.adoc
new file mode 100644
index 0000000..3a98b1c
--- /dev/null
+++ b/log4j-changelog/src/test/resources/4-exported/2.17.2.adoc
@@ -0,0 +1,56 @@
+////
+    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.
+////
+
+= 2.17.2 (2022-02-23)
+
+This release contains the changes noted below:
+
+* Over 50 improvements and fixes to the Log4j 1.x support.
+Continued testing has shown it is a suitable replacement for Log4j 1.x in most cases.
+* Scripting now requires a system property be specified naming the languages the user wishes to allow.
+The scripting engine will not load if the property isn't set.
+* By default, the only remote protocol allowed for loading configuration files is HTTPS.
+Users can specify a system property to allow others or prevent remote loading entirely.
+* Variable resolution has been modified so that only properties defined as properties in the configuration file can be recursive.
+All other Lookups are now non-recursive.
+This addresses issues users were having resolving lookups specified in property definitions for use in the `RoutingAppender` and `RollingFileAppender` due to restrictions put in place in 2.17.1.
+* Many other fixes and improvements.
+
+Due to a break in compatibility in the SLF4J binding, Log4j now ships with two versions of the SLF4J to Log4j adapters.
+`log4j-slf4j-impl` should be used with SLF4J 1.7.x and earlier and `log4j-slf4j18-impl` should be used with SLF4J 1.8.x and later.
+SLF4J-2.0.0 alpha releases are not fully supported.
+See https://issues.apache.org/jira/browse/LOG4J2-2975[LOG4J2-2975] and https://jira.qos.ch/browse/SLF4J-511[SLF4J-511].
+
+The Log4j 2.17.2 API, as well as many core components, maintains binary compatibility with previous releases.
+
+Apache Log4j 2.17.2 requires a minimum of Java 8 to build and run.
+Log4j 2.12.4 is the last release to support Java 7.
+Log4j 2.3.2 is the last release to support Java 6.
+Java 6 and Java 7 are no longer supported by the Log4j team.
+
+For complete information on Apache Log4j 2, including instructions on how to submit bug reports, patches, or suggestions for improvement, see http://logging.apache.org/log4j/2.x/[the Apache Log4j 2 website].
+
+== Changes
+
+== Removed
+
+* Fix `ThreadContextDataInjector` initialization deadlock (for https://issues.apache.org/jira/browse/LOG4J2-3333[LOG4J2-3333] by Carter Kozak)
+* Document that the Spring Boot Lookup requires the `log4j-spring-boot` dependency (for https://issues.apache.org/jira/browse/LOG4J2-3405[LOG4J2-3405] by Ralph Goers)
+
+== Fixed
+
+* Flag `LogManager` as initialized if the `LoggerFactory` is provided as a property (for https://issues.apache.org/jira/browse/LOG4J2-3304[LOG4J2-3304] by Ralph Goers, francis-FY)
diff --git a/log4j-changelog/src/test/resources/4-exported/2.18.0.adoc b/log4j-changelog/src/test/resources/4-exported/2.18.0.adoc
new file mode 100644
index 0000000..2342565
--- /dev/null
+++ b/log4j-changelog/src/test/resources/4-exported/2.18.0.adoc
@@ -0,0 +1,48 @@
+////
+    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.
+////
+
+= 2.18.0 (2022-06-28)
+
+This release primarily contains bug fixes and minor enhancements.
+
+Due to a break in compatibility in the SLF4J binding, Log4j now ships with two versions of the SLF4J to Log4j adapters.
+`log4j-slf4j-impl` should be used with SLF4J 1.7.x and earlier and `log4j-slf4j18-impl` should be used with SLF4J 1.8.x and later.
+SLF4J-2.0.0 alpha releases are not fully supported.
+See https://issues.apache.org/jira/browse/LOG4J2-2975[LOG4J2-2975] and https://jira.qos.ch/browse/SLF4J-511[SLF4J-511].
+
+The Log4j 2.18.0 API, as well as many core components, maintains binary compatibility with previous releases.
+
+Apache Log4j 2.18.0 requires a minimum of Java 8 to build and run.
+Log4j 2.12.4 is the last release to support Java 7.
+Log4j 2.3.2 is the last release to support Java 6.
+Java 6 and Java 7 are no longer supported by the Log4j team.
+
+For complete information on Apache Log4j 2, including instructions on how to submit bug reports, patches, or suggestions for improvement, see http://logging.apache.org/log4j/2.x/[the Apache Log4j 2 website].
+
+== Changes
+
+== Added
+
+* Don't use `Paths.get()` to avoid circular file systems (for https://issues.apache.org/jira/browse/LOG4J2-3527[LOG4J2-3527] by Ralph Goers)
+
+== Removed
+
+* The `DirectWriteRolloverStrategy` was not detecting the correct index to use during startup (for https://issues.apache.org/jira/browse/LOG4J2-3490[LOG4J2-3490] by Ralph Goers)
+
+== Fixed
+
+* `DirectWriteRolloverStrategy` should use the current time when creating files (for https://issues.apache.org/jira/browse/LOG4J2-3339[LOG4J2-3339] by Ralph Goers)
diff --git a/log4j-changelog/src/test/resources/4-exported/2.x.x.adoc b/log4j-changelog/src/test/resources/4-exported/2.x.x.adoc
new file mode 100644
index 0000000..04eed2a
--- /dev/null
+++ b/log4j-changelog/src/test/resources/4-exported/2.x.x.adoc
@@ -0,0 +1,31 @@
+////
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         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.
+////
+
+= 2.x.x
+
+Changes staged for the next 2.x.x version that is yet to be released.
+
+== Changes
+
+== Changed
+
+* Add `getExplicitLevel` method to `LoggerConfig` (for https://issues.apache.org/jira/browse/LOG4J2-3572[LOG4J2-3572] by Ralph Goers)
+
+== Fixed
+
+* Make `StatusConsoleListener` use `SimpleLogger` internally (for https://issues.apache.org/jira/browse/LOG4J2-3584[LOG4J2-3584] by Volkan Yazıcı)
+* Harden `InstantFormatter` against delegate failures (for https://issues.apache.org/jira/browse/LOG4J2-3614[LOG4J2-3614] by Volkan Yazıcı, strainu)
diff --git a/log4j-changelog/src/test/resources/4-exported/3.x.x.adoc b/log4j-changelog/src/test/resources/4-exported/3.x.x.adoc
new file mode 100644
index 0000000..863658c
--- /dev/null
+++ b/log4j-changelog/src/test/resources/4-exported/3.x.x.adoc
@@ -0,0 +1,31 @@
+////
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         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.
+////
+
+= 3.x.x
+
+Changes staged for the next 3.x.x version that is yet to be released.
+
+== Changes
+
+== Added
+
+* Add `@Ordered` annotation to support plugin ordering when two or more plugins within the same category have the same case-insensitive name (for https://issues.apache.org/jira/browse/LOG4J2-857[LOG4J2-857] by Matt Sicker)
+
+== Changed
+
+* Simplify Maven `site` phase and align it with the one in `release-2.x` branch (for https://github.com/apache/logging-log4j2/pull/1220[1220] by Volkan Yazıcı)
+* Switch the issue tracker from https://issues.apache.org/jira/browse/LOG4J2[JIRA] to https://github.com/apache/logging-log4j2/issues[GitHub Issues] (for https://github.com/apache/logging-log4j2/pull/1221[1221] by Volkan Yazıcı)
diff --git a/log4j-changelog/src/test/resources/4-exported/index.adoc b/log4j-changelog/src/test/resources/4-exported/index.adoc
new file mode 100644
index 0000000..a827e27
--- /dev/null
+++ b/log4j-changelog/src/test/resources/4-exported/index.adoc
@@ -0,0 +1,23 @@
+////
+    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.
+////
+
+= Release changelogs
+
+* xref:3.x.x.adoc[3.x.x]
+* xref:2.x.x.adoc[2.x.x]
+* xref:2.18.0.adoc[2.18.0] (2022-06-28)
+* xref:2.17.2.adoc[2.17.2] (2022-02-23)


[logging-log4j-tools] 06/07: Add tests for `ChangelogReleaser`

Posted by vy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git

commit 73680988f1b6b926503e73cc0a345bb7453899ee
Author: Volkan Yazıcı <vo...@yazi.ci>
AuthorDate: Wed Jan 25 16:05:06 2023 +0100

    Add tests for `ChangelogReleaser`
---
 .../java/org/apache/logging/log4j/ExportMojo.java  |  2 +-
 .../java/org/apache/logging/log4j/ReleaseMojo.java |  6 +-
 log4j-changelog/pom.xml                            |  6 ++
 .../changelog/exporter/ChangelogExporterArgs.java  |  4 --
 .../changelog/releaser/ChangelogReleaser.java      |  3 +-
 .../changelog/releaser/ChangelogReleaserArgs.java  | 27 ++++++---
 .../logging/log4j/changelog/util/XmlUtils.java     |  4 +-
 .../log4j/changelog/ChangelogReleaserTest.java     | 65 ++++++++++++++++++++++
 .../5-unlinked/.2.x.x/.changelog.adoc.ftl          | 22 ++++++++
 ...Add_getExplicitLevel_method_to_LoggerConfig.xml | 25 +++++++++
 ...ConsoleListener_use_SimpleLogger_internally.xml | 25 +++++++++
 ..._InstantFormatter_against_delegate_failures.xml | 26 +++++++++
 .../5-unlinked/.3.x.x/.changelog.adoc.ftl          | 22 ++++++++
 .../.3.x.x/1220_Simplify_site_generation.xml       | 25 +++++++++
 .../1221_switch_from_jira_to_github_issues.xml     | 25 +++++++++
 ...notation_to_support_plugin_ordering_when_tw.xml | 27 +++++++++
 .../5-unlinked/.changelog-entries.adoc.ftl         | 48 ++++++++++++++++
 .../src/test/resources/5-unlinked/.index.adoc.ftl  | 22 ++++++++
 .../5-unlinked/2.17.2/.changelog.adoc.ftl          | 47 ++++++++++++++++
 .../test/resources/5-unlinked/2.17.2/.release.xml  | 21 +++++++
 ...s_initialized_if_the_LoggerFactory_is_provi.xml | 26 +++++++++
 ...ContextDataInjector_initialization_deadlock.xml | 25 +++++++++
 ..._Spring_Boot_Lookup_requires_the_log4j_spri.xml | 25 +++++++++
 .../5-unlinked/2.18.0/.changelog.adoc.ftl          | 36 ++++++++++++
 .../test/resources/5-unlinked/2.18.0/.release.xml  | 21 +++++++
 ...erStrategy_should_use_the_current_time_when.xml | 25 +++++++++
 ...lloverStrategy_was_not_detecting_the_correc.xml | 25 +++++++++
 ...se_Paths_get_to_avoid_circular_file_systems.xml | 25 +++++++++
 .../6-released/.3.x.x/.changelog.adoc.ftl          | 22 ++++++++
 .../.3.x.x/1220_Simplify_site_generation.xml       | 25 +++++++++
 .../1221_switch_from_jira_to_github_issues.xml     | 25 +++++++++
 ...notation_to_support_plugin_ordering_when_tw.xml | 27 +++++++++
 .../6-released/.changelog-entries.adoc.ftl         | 48 ++++++++++++++++
 .../src/test/resources/6-released/.index.adoc.ftl  | 22 ++++++++
 .../6-released/2.17.2/.changelog.adoc.ftl          | 47 ++++++++++++++++
 .../test/resources/6-released/2.17.2/.release.xml  | 21 +++++++
 ...s_initialized_if_the_LoggerFactory_is_provi.xml | 26 +++++++++
 ...ContextDataInjector_initialization_deadlock.xml | 25 +++++++++
 ..._Spring_Boot_Lookup_requires_the_log4j_spri.xml | 25 +++++++++
 .../6-released/2.18.0/.changelog.adoc.ftl          | 36 ++++++++++++
 .../test/resources/6-released/2.18.0/.release.xml  | 21 +++++++
 ...erStrategy_should_use_the_current_time_when.xml | 25 +++++++++
 ...lloverStrategy_was_not_detecting_the_correc.xml | 25 +++++++++
 ...se_Paths_get_to_avoid_circular_file_systems.xml | 25 +++++++++
 .../6-released/2.19.0/.changelog.adoc.ftl          | 22 ++++++++
 .../test/resources/6-released/2.19.0/.release.xml  | 21 +++++++
 ...Add_getExplicitLevel_method_to_LoggerConfig.xml | 25 +++++++++
 ...ConsoleListener_use_SimpleLogger_internally.xml | 25 +++++++++
 ..._InstantFormatter_against_delegate_failures.xml | 26 +++++++++
 log4j-tools-parent/pom.xml                         |  7 +++
 50 files changed, 1215 insertions(+), 16 deletions(-)

diff --git a/log4j-changelog-maven-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java b/log4j-changelog-maven-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java
index 423190e..ab2cc77 100644
--- a/log4j-changelog-maven-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java
+++ b/log4j-changelog-maven-plugin/src/main/java/org/apache/logging/log4j/ExportMojo.java
@@ -53,7 +53,7 @@ public class ExportMojo extends AbstractMojo {
     private File outputDirectory;
 
     public void execute() {
-        ChangelogExporterArgs args = ChangelogExporterArgs.fromArgs(
+        ChangelogExporterArgs args = new ChangelogExporterArgs(
                 changelogDirectory.toPath(),
                 outputDirectory.toPath());
         ChangelogExporter.performExport(args);
diff --git a/log4j-changelog-maven-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java b/log4j-changelog-maven-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java
index 2764fec..feb67fd 100644
--- a/log4j-changelog-maven-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java
+++ b/log4j-changelog-maven-plugin/src/main/java/org/apache/logging/log4j/ReleaseMojo.java
@@ -17,6 +17,7 @@
 package org.apache.logging.log4j;
 
 import java.io.File;
+import java.time.LocalDate;
 
 import org.apache.logging.log4j.changelog.releaser.ChangelogReleaser;
 import org.apache.logging.log4j.changelog.releaser.ChangelogReleaserArgs;
@@ -52,7 +53,10 @@ public class ReleaseMojo extends AbstractMojo {
     private String releaseVersion;
 
     public void execute() {
-        ChangelogReleaserArgs args = ChangelogReleaserArgs.fromArgs(changelogDirectory.toPath(), releaseVersion);
+        ChangelogReleaserArgs args = new ChangelogReleaserArgs(
+                changelogDirectory.toPath(),
+                releaseVersion,
+                LocalDate.now());
         ChangelogReleaser.performRelease(args);
     }
 
diff --git a/log4j-changelog/pom.xml b/log4j-changelog/pom.xml
index 53f0d77..fb4af35 100644
--- a/log4j-changelog/pom.xml
+++ b/log4j-changelog/pom.xml
@@ -55,6 +55,12 @@
       <scope>test</scope>
     </dependency>
 
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <scope>test</scope>
+    </dependency>
+
   </dependencies>
 
 </project>
diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
index 5f25950..178eba6 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporterArgs.java
@@ -42,8 +42,4 @@ public final class ChangelogExporterArgs {
         return new ChangelogExporterArgs(changelogDirectory, outputDirectory);
     }
 
-    public static ChangelogExporterArgs fromArgs(final Path changelogDirectory, final Path outputDirectory) {
-        return new ChangelogExporterArgs(changelogDirectory, outputDirectory);
-    }
-
 }
diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
index 8d3f17e..27204a1 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaser.java
@@ -34,7 +34,8 @@ public final class ChangelogReleaser {
     private ChangelogReleaser() {}
 
     public static void main(final String[] mainArgs) {
-        performRelease(ChangelogReleaserArgs.fromSystemProperties());
+        final ChangelogReleaserArgs args = ChangelogReleaserArgs.fromSystemProperties();
+        performRelease(args);
     }
 
     public static void performRelease(final ChangelogReleaserArgs args) {
diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
index e837fe7..7951be4 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/releaser/ChangelogReleaserArgs.java
@@ -17,6 +17,8 @@
 package org.apache.logging.log4j.changelog.releaser;
 
 import java.nio.file.Path;
+import java.time.LocalDate;
+import java.util.Objects;
 
 import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBlankPathProperty;
 import static org.apache.logging.log4j.changelog.util.PropertyUtils.requireNonBlankStringProperty;
@@ -32,20 +34,31 @@ public final class ChangelogReleaserArgs {
 
     final String releaseVersion;
 
-    private ChangelogReleaserArgs(final Path changelogDirectory, final String releaseVersion) {
+    final LocalDate releaseDate;
+
+    public ChangelogReleaserArgs(
+            final Path changelogDirectory,
+            final String releaseVersion,
+            final LocalDate releaseDate) {
+
+        // Check arguments
+        Objects.requireNonNull(changelogDirectory, "changelogDirectory");
+        Objects.requireNonNull(releaseVersion, "releaseVersion");
+        requireSemanticVersioning(releaseVersion, RELEASE_VERSION_PROPERTY_NAME);
+        Objects.requireNonNull(releaseDate, "releaseDate");
+
+        // Set fields
         this.changelogDirectory = changelogDirectory;
         this.releaseVersion = releaseVersion;
+        this.releaseDate = releaseDate;
+
     }
 
     static ChangelogReleaserArgs fromSystemProperties() {
         final Path changelogDirectory = requireNonBlankPathProperty(CHANGELOG_DIRECTORY_PROPERTY_NAME);
         final String releaseVersion = requireNonBlankStringProperty(RELEASE_VERSION_PROPERTY_NAME);
-        requireSemanticVersioning(releaseVersion, RELEASE_VERSION_PROPERTY_NAME);
-        return new ChangelogReleaserArgs(changelogDirectory, releaseVersion);
-    }
-
-    public static ChangelogReleaserArgs fromArgs(final Path changelogDirectory, final String releaseVersion) {
-        return new ChangelogReleaserArgs(changelogDirectory, releaseVersion);
+        final LocalDate releaseDate = LocalDate.now();
+        return new ChangelogReleaserArgs(changelogDirectory, releaseVersion, releaseDate);
     }
 
 }
diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/util/XmlUtils.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/util/XmlUtils.java
index a438442..96e48c7 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/util/XmlUtils.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/util/XmlUtils.java
@@ -16,6 +16,8 @@
  */
 package org.apache.logging.log4j.changelog.util;
 
+import java.io.InputStream;
+
 import javax.xml.XMLConstants;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
@@ -23,8 +25,6 @@ import javax.xml.transform.stream.StreamSource;
 import javax.xml.validation.Schema;
 import javax.xml.validation.SchemaFactory;
 
-import java.io.InputStream;
-
 final class XmlUtils {
 
     static final String XML_NAMESPACE = "http://logging.apache.org/log4j/changelog";
diff --git a/log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/ChangelogReleaserTest.java b/log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/ChangelogReleaserTest.java
new file mode 100644
index 0000000..e0e94f8
--- /dev/null
+++ b/log4j-changelog/src/test/java/org/apache/logging/log4j/changelog/ChangelogReleaserTest.java
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+package org.apache.logging.log4j.changelog;
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.time.LocalDate;
+
+import org.apache.logging.log4j.changelog.releaser.ChangelogReleaser;
+import org.apache.logging.log4j.changelog.releaser.ChangelogReleaserArgs;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.CleanupMode;
+import org.junit.jupiter.api.io.TempDir;
+
+import static org.apache.logging.log4j.changelog.FileTestUtils.assertDirectoryContentMatches;
+
+import static org.apache.commons.io.FileUtils.copyDirectory;
+
+class ChangelogReleaserTest {
+
+    @Test
+    void output_should_match(@TempDir(cleanup = CleanupMode.ON_SUCCESS) final Path changelogDirectory)
+            throws Exception {
+
+        // Clone the directory to avoid `move` operations cluttering the reference folder
+        copyDirectory(new File("src/test/resources/5-unlinked"), changelogDirectory.toFile());
+
+        // Invoke the releaser
+        ChangelogReleaserArgs args = new ChangelogReleaserArgs(
+                changelogDirectory,
+                "2.19.0",
+                LocalDate.parse("2023-01-25"));
+        ChangelogReleaser.performRelease(args);
+
+        // Empty folders are not tracked by git, though created by `ChangelogReleaser`.
+        // Create the `.2.x.x` folder to match the actual output.
+        final Path expectedChangelogDirectory = Paths.get("src/test/resources/6-released");
+        final Path emptyFolder = expectedChangelogDirectory.resolve(".2.x.x");
+        if (!Files.exists(emptyFolder)) {
+            Files.createDirectories(emptyFolder);
+        }
+
+        // Compare the output
+        assertDirectoryContentMatches(changelogDirectory, expectedChangelogDirectory);
+
+    }
+
+}
diff --git a/log4j-changelog/src/test/resources/5-unlinked/.2.x.x/.changelog.adoc.ftl b/log4j-changelog/src/test/resources/5-unlinked/.2.x.x/.changelog.adoc.ftl
new file mode 100644
index 0000000..55dd1ed
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/.2.x.x/.changelog.adoc.ftl
@@ -0,0 +1,22 @@
+////
+    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.
+////
+
+= ${release.version}<#if release.date?has_content> (${release.date})</#if>
+
+Changes staged for the next 2.x.x version that is yet to be released.
+
+<#include "../.changelog-entries.adoc.ftl">
diff --git a/log4j-changelog/src/test/resources/5-unlinked/.2.x.x/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml b/log4j-changelog/src/test/resources/5-unlinked/.2.x.x/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml
new file mode 100644
index 0000000..b135ac2
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/.2.x.x/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="changed">
+  <issue id="LOG4J2-3572" link="https://issues.apache.org/jira/browse/LOG4J2-3572"/>
+  <author id="rgoers"/>
+  <description format="asciidoc">Add `getExplicitLevel` method to `LoggerConfig`</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/5-unlinked/.2.x.x/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml b/log4j-changelog/src/test/resources/5-unlinked/.2.x.x/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml
new file mode 100644
index 0000000..7902947
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/.2.x.x/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="fixed">
+  <issue id="LOG4J2-3584" link="https://issues.apache.org/jira/browse/LOG4J2-3584"/>
+  <author id="vy"/>
+  <description format="asciidoc">Make `StatusConsoleListener` use `SimpleLogger` internally</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/5-unlinked/.2.x.x/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml b/log4j-changelog/src/test/resources/5-unlinked/.2.x.x/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml
new file mode 100644
index 0000000..34111cf
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/.2.x.x/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="fixed">
+  <issue id="LOG4J2-3614" link="https://issues.apache.org/jira/browse/LOG4J2-3614"/>
+  <author id="vy"/>
+  <author name="strainu"/>
+  <description format="asciidoc">Harden `InstantFormatter` against delegate failures</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/5-unlinked/.3.x.x/.changelog.adoc.ftl b/log4j-changelog/src/test/resources/5-unlinked/.3.x.x/.changelog.adoc.ftl
new file mode 100644
index 0000000..b2d69db
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/.3.x.x/.changelog.adoc.ftl
@@ -0,0 +1,22 @@
+////
+    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.
+////
+
+= ${release.version}<#if release.date?has_content> (${release.date})</#if>
+
+Changes staged for the next 3.x.x version that is yet to be released.
+
+<#include "../.changelog-entries.adoc.ftl">
diff --git a/log4j-changelog/src/test/resources/5-unlinked/.3.x.x/1220_Simplify_site_generation.xml b/log4j-changelog/src/test/resources/5-unlinked/.3.x.x/1220_Simplify_site_generation.xml
new file mode 100644
index 0000000..81f353c
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/.3.x.x/1220_Simplify_site_generation.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="changed">
+  <issue id="1220" link="https://github.com/apache/logging-log4j2/pull/1220"/>
+  <author id="vy"/>
+  <description format="asciidoc">Simplify Maven `site` phase and align it with the one in `release-2.x` branch</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/5-unlinked/.3.x.x/1221_switch_from_jira_to_github_issues.xml b/log4j-changelog/src/test/resources/5-unlinked/.3.x.x/1221_switch_from_jira_to_github_issues.xml
new file mode 100644
index 0000000..333a109
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/.3.x.x/1221_switch_from_jira_to_github_issues.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="changed">
+  <issue id="1221" link="https://github.com/apache/logging-log4j2/pull/1221"/>
+  <author id="vy"/>
+  <description format="asciidoc">Switch the issue tracker from https://issues.apache.org/jira/browse/LOG4J2[JIRA] to https://github.com/apache/logging-log4j2/issues[GitHub Issues]</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/5-unlinked/.3.x.x/LOG4J2-857_Add_Ordered_annotation_to_support_plugin_ordering_when_tw.xml b/log4j-changelog/src/test/resources/5-unlinked/.3.x.x/LOG4J2-857_Add_Ordered_annotation_to_support_plugin_ordering_when_tw.xml
new file mode 100644
index 0000000..ce50aa7
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/.3.x.x/LOG4J2-857_Add_Ordered_annotation_to_support_plugin_ordering_when_tw.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="added">
+  <issue id="LOG4J2-857" link="https://issues.apache.org/jira/browse/LOG4J2-857"/>
+  <author id="mattsicker"/>
+  <description format="asciidoc">
+    Add `@Ordered` annotation to support plugin ordering when two or more plugins within the same category have the same case-insensitive name
+  </description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/5-unlinked/.changelog-entries.adoc.ftl b/log4j-changelog/src/test/resources/5-unlinked/.changelog-entries.adoc.ftl
new file mode 100644
index 0000000..a8c18e8
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/.changelog-entries.adoc.ftl
@@ -0,0 +1,48 @@
+<#--
+  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.
+-->
+<#if entriesByType?size gt 0>== Changes
+<#list entriesByType as entryType, entries>
+
+== ${entryType?capitalize}
+
+<#list entries as entry>
+* ${entry.description.text?replace("\\s+", " ", "r")} (for <@compress single_line=true>
+<#list entry.issues as issue>${issue.link}[${issue.id}]<#if issue?has_next>, </#if></#list> by
+<#list entry.authors as author>
+<@compress single_line=true>
+<#if !author.id?has_content>${author.name}
+<#elseif author.id == "rgoers">Ralph Goers
+<#elseif author.id == "ggregory">Gary Gregory
+<#elseif author.id == "sdeboy">Scott Deboy
+<#elseif author.id == "rpopma">Remko Popma
+<#elseif author.id == "nickwilliams">Nick Williams
+<#elseif author.id == "mattsicker">Matt Sicker
+<#elseif author.id == "bbrouwer">Bruce Brouwer
+<#elseif author.id == "rgupta">Raman Gupta
+<#elseif author.id == "mikes">Mikael Ståldal
+<#elseif author.id == "ckozak">Carter Kozak
+<#elseif author.id == "vy">Volkan Yazıcı
+<#elseif author.id == "rgrabowski">Ron Grabowski
+<#elseif author.id == "pkarwasz">Piotr P. Karwasz
+<#else>`${author.id}`
+</#if>
+</...@compress><#if author?has_next>, </#if>
+</#list>
+</...@compress>)
+</#list>
+</#list>
+</#if>
diff --git a/log4j-changelog/src/test/resources/5-unlinked/.index.adoc.ftl b/log4j-changelog/src/test/resources/5-unlinked/.index.adoc.ftl
new file mode 100644
index 0000000..e6e82ba
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/.index.adoc.ftl
@@ -0,0 +1,22 @@
+////
+    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.
+////
+
+= Release changelogs
+
+<#list releases as release>
+* xref:${release.changelogFileName}[${release.version}]<#if release.date?has_content> (${release.date})</#if>
+</#list>
diff --git a/log4j-changelog/src/test/resources/5-unlinked/2.17.2/.changelog.adoc.ftl b/log4j-changelog/src/test/resources/5-unlinked/2.17.2/.changelog.adoc.ftl
new file mode 100644
index 0000000..d32f334
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/2.17.2/.changelog.adoc.ftl
@@ -0,0 +1,47 @@
+////
+    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.
+////
+
+= ${release.version}<#if release.date?has_content> (${release.date})</#if>
+
+This release contains the changes noted below:
+
+* Over 50 improvements and fixes to the Log4j 1.x support.
+Continued testing has shown it is a suitable replacement for Log4j 1.x in most cases.
+* Scripting now requires a system property be specified naming the languages the user wishes to allow.
+The scripting engine will not load if the property isn't set.
+* By default, the only remote protocol allowed for loading configuration files is HTTPS.
+Users can specify a system property to allow others or prevent remote loading entirely.
+* Variable resolution has been modified so that only properties defined as properties in the configuration file can be recursive.
+All other Lookups are now non-recursive.
+This addresses issues users were having resolving lookups specified in property definitions for use in the `RoutingAppender` and `RollingFileAppender` due to restrictions put in place in 2.17.1.
+* Many other fixes and improvements.
+
+Due to a break in compatibility in the SLF4J binding, Log4j now ships with two versions of the SLF4J to Log4j adapters.
+`log4j-slf4j-impl` should be used with SLF4J 1.7.x and earlier and `log4j-slf4j18-impl` should be used with SLF4J 1.8.x and later.
+SLF4J-2.0.0 alpha releases are not fully supported.
+See https://issues.apache.org/jira/browse/LOG4J2-2975[LOG4J2-2975] and https://jira.qos.ch/browse/SLF4J-511[SLF4J-511].
+
+The Log4j 2.17.2 API, as well as many core components, maintains binary compatibility with previous releases.
+
+Apache Log4j 2.17.2 requires a minimum of Java 8 to build and run.
+Log4j 2.12.4 is the last release to support Java 7.
+Log4j 2.3.2 is the last release to support Java 6.
+Java 6 and Java 7 are no longer supported by the Log4j team.
+
+For complete information on Apache Log4j 2, including instructions on how to submit bug reports, patches, or suggestions for improvement, see http://logging.apache.org/log4j/2.x/[the Apache Log4j 2 website].
+
+<#include "../.changelog-entries.adoc.ftl">
diff --git a/log4j-changelog/src/test/resources/5-unlinked/2.17.2/.release.xml b/log4j-changelog/src/test/resources/5-unlinked/2.17.2/.release.xml
new file mode 100644
index 0000000..b46393f
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/2.17.2/.release.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<release xmlns="http://logging.apache.org/log4j/changelog"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+         date="2022-02-23" version="2.17.2"/>
diff --git a/log4j-changelog/src/test/resources/5-unlinked/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml b/log4j-changelog/src/test/resources/5-unlinked/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml
new file mode 100644
index 0000000..242b03e
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="fixed">
+  <issue id="LOG4J2-3304" link="https://issues.apache.org/jira/browse/LOG4J2-3304"/>
+  <author id="rgoers"/>
+  <author name="francis-FY"/>
+  <description format="asciidoc">Flag `LogManager` as initialized if the `LoggerFactory` is provided as a property</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/5-unlinked/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml b/log4j-changelog/src/test/resources/5-unlinked/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml
new file mode 100644
index 0000000..cb4ea04
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="removed">
+  <issue id="LOG4J2-3333" link="https://issues.apache.org/jira/browse/LOG4J2-3333"/>
+  <author id="ckozak"/>
+  <description format="asciidoc">Fix `ThreadContextDataInjector` initialization deadlock</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/5-unlinked/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml b/log4j-changelog/src/test/resources/5-unlinked/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml
new file mode 100644
index 0000000..6b213cb
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="removed">
+  <issue id="LOG4J2-3405" link="https://issues.apache.org/jira/browse/LOG4J2-3405"/>
+  <author id="rgoers"/>
+  <description format="asciidoc">Document that the Spring Boot Lookup requires the `log4j-spring-boot` dependency</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/5-unlinked/2.18.0/.changelog.adoc.ftl b/log4j-changelog/src/test/resources/5-unlinked/2.18.0/.changelog.adoc.ftl
new file mode 100644
index 0000000..5fa0ffa
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/2.18.0/.changelog.adoc.ftl
@@ -0,0 +1,36 @@
+////
+    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.
+////
+
+= ${release.version}<#if release.date?has_content> (${release.date})</#if>
+
+This release primarily contains bug fixes and minor enhancements.
+
+Due to a break in compatibility in the SLF4J binding, Log4j now ships with two versions of the SLF4J to Log4j adapters.
+`log4j-slf4j-impl` should be used with SLF4J 1.7.x and earlier and `log4j-slf4j18-impl` should be used with SLF4J 1.8.x and later.
+SLF4J-2.0.0 alpha releases are not fully supported.
+See https://issues.apache.org/jira/browse/LOG4J2-2975[LOG4J2-2975] and https://jira.qos.ch/browse/SLF4J-511[SLF4J-511].
+
+The Log4j 2.18.0 API, as well as many core components, maintains binary compatibility with previous releases.
+
+Apache Log4j 2.18.0 requires a minimum of Java 8 to build and run.
+Log4j 2.12.4 is the last release to support Java 7.
+Log4j 2.3.2 is the last release to support Java 6.
+Java 6 and Java 7 are no longer supported by the Log4j team.
+
+For complete information on Apache Log4j 2, including instructions on how to submit bug reports, patches, or suggestions for improvement, see http://logging.apache.org/log4j/2.x/[the Apache Log4j 2 website].
+
+<#include "../.changelog-entries.adoc.ftl">
diff --git a/log4j-changelog/src/test/resources/5-unlinked/2.18.0/.release.xml b/log4j-changelog/src/test/resources/5-unlinked/2.18.0/.release.xml
new file mode 100644
index 0000000..2f7068a
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/2.18.0/.release.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<release xmlns="http://logging.apache.org/log4j/changelog"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+         date="2022-06-28" version="2.18.0"/>
diff --git a/log4j-changelog/src/test/resources/5-unlinked/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml b/log4j-changelog/src/test/resources/5-unlinked/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml
new file mode 100644
index 0000000..8490b36
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="fixed">
+  <issue id="LOG4J2-3339" link="https://issues.apache.org/jira/browse/LOG4J2-3339"/>
+  <author id="rgoers"/>
+  <description format="asciidoc">`DirectWriteRolloverStrategy` should use the current time when creating files</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/5-unlinked/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml b/log4j-changelog/src/test/resources/5-unlinked/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml
new file mode 100644
index 0000000..c60d17b
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="removed">
+  <issue id="LOG4J2-3490" link="https://issues.apache.org/jira/browse/LOG4J2-3490"/>
+  <author id="rgoers"/>
+  <description format="asciidoc">The `DirectWriteRolloverStrategy` was not detecting the correct index to use during startup</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/5-unlinked/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml b/log4j-changelog/src/test/resources/5-unlinked/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml
new file mode 100644
index 0000000..d7e296b
--- /dev/null
+++ b/log4j-changelog/src/test/resources/5-unlinked/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="added">
+  <issue id="LOG4J2-3527" link="https://issues.apache.org/jira/browse/LOG4J2-3527"/>
+  <author id="rgoers"/>
+  <description format="asciidoc">Don't use `Paths.get()` to avoid circular file systems</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/6-released/.3.x.x/.changelog.adoc.ftl b/log4j-changelog/src/test/resources/6-released/.3.x.x/.changelog.adoc.ftl
new file mode 100644
index 0000000..b2d69db
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/.3.x.x/.changelog.adoc.ftl
@@ -0,0 +1,22 @@
+////
+    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.
+////
+
+= ${release.version}<#if release.date?has_content> (${release.date})</#if>
+
+Changes staged for the next 3.x.x version that is yet to be released.
+
+<#include "../.changelog-entries.adoc.ftl">
diff --git a/log4j-changelog/src/test/resources/6-released/.3.x.x/1220_Simplify_site_generation.xml b/log4j-changelog/src/test/resources/6-released/.3.x.x/1220_Simplify_site_generation.xml
new file mode 100644
index 0000000..81f353c
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/.3.x.x/1220_Simplify_site_generation.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="changed">
+  <issue id="1220" link="https://github.com/apache/logging-log4j2/pull/1220"/>
+  <author id="vy"/>
+  <description format="asciidoc">Simplify Maven `site` phase and align it with the one in `release-2.x` branch</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/6-released/.3.x.x/1221_switch_from_jira_to_github_issues.xml b/log4j-changelog/src/test/resources/6-released/.3.x.x/1221_switch_from_jira_to_github_issues.xml
new file mode 100644
index 0000000..333a109
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/.3.x.x/1221_switch_from_jira_to_github_issues.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="changed">
+  <issue id="1221" link="https://github.com/apache/logging-log4j2/pull/1221"/>
+  <author id="vy"/>
+  <description format="asciidoc">Switch the issue tracker from https://issues.apache.org/jira/browse/LOG4J2[JIRA] to https://github.com/apache/logging-log4j2/issues[GitHub Issues]</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/6-released/.3.x.x/LOG4J2-857_Add_Ordered_annotation_to_support_plugin_ordering_when_tw.xml b/log4j-changelog/src/test/resources/6-released/.3.x.x/LOG4J2-857_Add_Ordered_annotation_to_support_plugin_ordering_when_tw.xml
new file mode 100644
index 0000000..ce50aa7
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/.3.x.x/LOG4J2-857_Add_Ordered_annotation_to_support_plugin_ordering_when_tw.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="added">
+  <issue id="LOG4J2-857" link="https://issues.apache.org/jira/browse/LOG4J2-857"/>
+  <author id="mattsicker"/>
+  <description format="asciidoc">
+    Add `@Ordered` annotation to support plugin ordering when two or more plugins within the same category have the same case-insensitive name
+  </description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/6-released/.changelog-entries.adoc.ftl b/log4j-changelog/src/test/resources/6-released/.changelog-entries.adoc.ftl
new file mode 100644
index 0000000..a8c18e8
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/.changelog-entries.adoc.ftl
@@ -0,0 +1,48 @@
+<#--
+  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.
+-->
+<#if entriesByType?size gt 0>== Changes
+<#list entriesByType as entryType, entries>
+
+== ${entryType?capitalize}
+
+<#list entries as entry>
+* ${entry.description.text?replace("\\s+", " ", "r")} (for <@compress single_line=true>
+<#list entry.issues as issue>${issue.link}[${issue.id}]<#if issue?has_next>, </#if></#list> by
+<#list entry.authors as author>
+<@compress single_line=true>
+<#if !author.id?has_content>${author.name}
+<#elseif author.id == "rgoers">Ralph Goers
+<#elseif author.id == "ggregory">Gary Gregory
+<#elseif author.id == "sdeboy">Scott Deboy
+<#elseif author.id == "rpopma">Remko Popma
+<#elseif author.id == "nickwilliams">Nick Williams
+<#elseif author.id == "mattsicker">Matt Sicker
+<#elseif author.id == "bbrouwer">Bruce Brouwer
+<#elseif author.id == "rgupta">Raman Gupta
+<#elseif author.id == "mikes">Mikael Ståldal
+<#elseif author.id == "ckozak">Carter Kozak
+<#elseif author.id == "vy">Volkan Yazıcı
+<#elseif author.id == "rgrabowski">Ron Grabowski
+<#elseif author.id == "pkarwasz">Piotr P. Karwasz
+<#else>`${author.id}`
+</#if>
+</...@compress><#if author?has_next>, </#if>
+</#list>
+</...@compress>)
+</#list>
+</#list>
+</#if>
diff --git a/log4j-changelog/src/test/resources/6-released/.index.adoc.ftl b/log4j-changelog/src/test/resources/6-released/.index.adoc.ftl
new file mode 100644
index 0000000..e6e82ba
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/.index.adoc.ftl
@@ -0,0 +1,22 @@
+////
+    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.
+////
+
+= Release changelogs
+
+<#list releases as release>
+* xref:${release.changelogFileName}[${release.version}]<#if release.date?has_content> (${release.date})</#if>
+</#list>
diff --git a/log4j-changelog/src/test/resources/6-released/2.17.2/.changelog.adoc.ftl b/log4j-changelog/src/test/resources/6-released/2.17.2/.changelog.adoc.ftl
new file mode 100644
index 0000000..d32f334
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/2.17.2/.changelog.adoc.ftl
@@ -0,0 +1,47 @@
+////
+    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.
+////
+
+= ${release.version}<#if release.date?has_content> (${release.date})</#if>
+
+This release contains the changes noted below:
+
+* Over 50 improvements and fixes to the Log4j 1.x support.
+Continued testing has shown it is a suitable replacement for Log4j 1.x in most cases.
+* Scripting now requires a system property be specified naming the languages the user wishes to allow.
+The scripting engine will not load if the property isn't set.
+* By default, the only remote protocol allowed for loading configuration files is HTTPS.
+Users can specify a system property to allow others or prevent remote loading entirely.
+* Variable resolution has been modified so that only properties defined as properties in the configuration file can be recursive.
+All other Lookups are now non-recursive.
+This addresses issues users were having resolving lookups specified in property definitions for use in the `RoutingAppender` and `RollingFileAppender` due to restrictions put in place in 2.17.1.
+* Many other fixes and improvements.
+
+Due to a break in compatibility in the SLF4J binding, Log4j now ships with two versions of the SLF4J to Log4j adapters.
+`log4j-slf4j-impl` should be used with SLF4J 1.7.x and earlier and `log4j-slf4j18-impl` should be used with SLF4J 1.8.x and later.
+SLF4J-2.0.0 alpha releases are not fully supported.
+See https://issues.apache.org/jira/browse/LOG4J2-2975[LOG4J2-2975] and https://jira.qos.ch/browse/SLF4J-511[SLF4J-511].
+
+The Log4j 2.17.2 API, as well as many core components, maintains binary compatibility with previous releases.
+
+Apache Log4j 2.17.2 requires a minimum of Java 8 to build and run.
+Log4j 2.12.4 is the last release to support Java 7.
+Log4j 2.3.2 is the last release to support Java 6.
+Java 6 and Java 7 are no longer supported by the Log4j team.
+
+For complete information on Apache Log4j 2, including instructions on how to submit bug reports, patches, or suggestions for improvement, see http://logging.apache.org/log4j/2.x/[the Apache Log4j 2 website].
+
+<#include "../.changelog-entries.adoc.ftl">
diff --git a/log4j-changelog/src/test/resources/6-released/2.17.2/.release.xml b/log4j-changelog/src/test/resources/6-released/2.17.2/.release.xml
new file mode 100644
index 0000000..b46393f
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/2.17.2/.release.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<release xmlns="http://logging.apache.org/log4j/changelog"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+         date="2022-02-23" version="2.17.2"/>
diff --git a/log4j-changelog/src/test/resources/6-released/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml b/log4j-changelog/src/test/resources/6-released/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml
new file mode 100644
index 0000000..242b03e
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/2.17.2/LOG4J2-3304_Flag_LogManager_as_initialized_if_the_LoggerFactory_is_provi.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="fixed">
+  <issue id="LOG4J2-3304" link="https://issues.apache.org/jira/browse/LOG4J2-3304"/>
+  <author id="rgoers"/>
+  <author name="francis-FY"/>
+  <description format="asciidoc">Flag `LogManager` as initialized if the `LoggerFactory` is provided as a property</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/6-released/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml b/log4j-changelog/src/test/resources/6-released/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml
new file mode 100644
index 0000000..cb4ea04
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/2.17.2/LOG4J2-3333_Fix_ThreadContextDataInjector_initialization_deadlock.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="removed">
+  <issue id="LOG4J2-3333" link="https://issues.apache.org/jira/browse/LOG4J2-3333"/>
+  <author id="ckozak"/>
+  <description format="asciidoc">Fix `ThreadContextDataInjector` initialization deadlock</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/6-released/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml b/log4j-changelog/src/test/resources/6-released/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml
new file mode 100644
index 0000000..6b213cb
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/2.17.2/LOG4J2-3405_Document_that_the_Spring_Boot_Lookup_requires_the_log4j_spri.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="removed">
+  <issue id="LOG4J2-3405" link="https://issues.apache.org/jira/browse/LOG4J2-3405"/>
+  <author id="rgoers"/>
+  <description format="asciidoc">Document that the Spring Boot Lookup requires the `log4j-spring-boot` dependency</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/6-released/2.18.0/.changelog.adoc.ftl b/log4j-changelog/src/test/resources/6-released/2.18.0/.changelog.adoc.ftl
new file mode 100644
index 0000000..5fa0ffa
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/2.18.0/.changelog.adoc.ftl
@@ -0,0 +1,36 @@
+////
+    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.
+////
+
+= ${release.version}<#if release.date?has_content> (${release.date})</#if>
+
+This release primarily contains bug fixes and minor enhancements.
+
+Due to a break in compatibility in the SLF4J binding, Log4j now ships with two versions of the SLF4J to Log4j adapters.
+`log4j-slf4j-impl` should be used with SLF4J 1.7.x and earlier and `log4j-slf4j18-impl` should be used with SLF4J 1.8.x and later.
+SLF4J-2.0.0 alpha releases are not fully supported.
+See https://issues.apache.org/jira/browse/LOG4J2-2975[LOG4J2-2975] and https://jira.qos.ch/browse/SLF4J-511[SLF4J-511].
+
+The Log4j 2.18.0 API, as well as many core components, maintains binary compatibility with previous releases.
+
+Apache Log4j 2.18.0 requires a minimum of Java 8 to build and run.
+Log4j 2.12.4 is the last release to support Java 7.
+Log4j 2.3.2 is the last release to support Java 6.
+Java 6 and Java 7 are no longer supported by the Log4j team.
+
+For complete information on Apache Log4j 2, including instructions on how to submit bug reports, patches, or suggestions for improvement, see http://logging.apache.org/log4j/2.x/[the Apache Log4j 2 website].
+
+<#include "../.changelog-entries.adoc.ftl">
diff --git a/log4j-changelog/src/test/resources/6-released/2.18.0/.release.xml b/log4j-changelog/src/test/resources/6-released/2.18.0/.release.xml
new file mode 100644
index 0000000..2f7068a
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/2.18.0/.release.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<release xmlns="http://logging.apache.org/log4j/changelog"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+         date="2022-06-28" version="2.18.0"/>
diff --git a/log4j-changelog/src/test/resources/6-released/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml b/log4j-changelog/src/test/resources/6-released/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml
new file mode 100644
index 0000000..8490b36
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/2.18.0/LOG4J2-3339_DirectWriteRolloverStrategy_should_use_the_current_time_when.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="fixed">
+  <issue id="LOG4J2-3339" link="https://issues.apache.org/jira/browse/LOG4J2-3339"/>
+  <author id="rgoers"/>
+  <description format="asciidoc">`DirectWriteRolloverStrategy` should use the current time when creating files</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/6-released/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml b/log4j-changelog/src/test/resources/6-released/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml
new file mode 100644
index 0000000..c60d17b
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/2.18.0/LOG4J2-3490_The_DirectWriteRolloverStrategy_was_not_detecting_the_correc.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="removed">
+  <issue id="LOG4J2-3490" link="https://issues.apache.org/jira/browse/LOG4J2-3490"/>
+  <author id="rgoers"/>
+  <description format="asciidoc">The `DirectWriteRolloverStrategy` was not detecting the correct index to use during startup</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/6-released/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml b/log4j-changelog/src/test/resources/6-released/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml
new file mode 100644
index 0000000..d7e296b
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/2.18.0/LOG4J2-3527_Don_t_use_Paths_get_to_avoid_circular_file_systems.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="added">
+  <issue id="LOG4J2-3527" link="https://issues.apache.org/jira/browse/LOG4J2-3527"/>
+  <author id="rgoers"/>
+  <description format="asciidoc">Don't use `Paths.get()` to avoid circular file systems</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/6-released/2.19.0/.changelog.adoc.ftl b/log4j-changelog/src/test/resources/6-released/2.19.0/.changelog.adoc.ftl
new file mode 100644
index 0000000..55dd1ed
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/2.19.0/.changelog.adoc.ftl
@@ -0,0 +1,22 @@
+////
+    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.
+////
+
+= ${release.version}<#if release.date?has_content> (${release.date})</#if>
+
+Changes staged for the next 2.x.x version that is yet to be released.
+
+<#include "../.changelog-entries.adoc.ftl">
diff --git a/log4j-changelog/src/test/resources/6-released/2.19.0/.release.xml b/log4j-changelog/src/test/resources/6-released/2.19.0/.release.xml
new file mode 100644
index 0000000..ab394aa
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/2.19.0/.release.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<release xmlns="http://logging.apache.org/log4j/changelog"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+         date="2023-01-25" version="2.19.0"/>
diff --git a/log4j-changelog/src/test/resources/6-released/2.19.0/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml b/log4j-changelog/src/test/resources/6-released/2.19.0/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml
new file mode 100644
index 0000000..b135ac2
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/2.19.0/LOG4J2-3572_Add_getExplicitLevel_method_to_LoggerConfig.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="changed">
+  <issue id="LOG4J2-3572" link="https://issues.apache.org/jira/browse/LOG4J2-3572"/>
+  <author id="rgoers"/>
+  <description format="asciidoc">Add `getExplicitLevel` method to `LoggerConfig`</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/6-released/2.19.0/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml b/log4j-changelog/src/test/resources/6-released/2.19.0/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml
new file mode 100644
index 0000000..7902947
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/2.19.0/LOG4J2-3584_Make_StatusConsoleListener_use_SimpleLogger_internally.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="fixed">
+  <issue id="LOG4J2-3584" link="https://issues.apache.org/jira/browse/LOG4J2-3584"/>
+  <author id="vy"/>
+  <description format="asciidoc">Make `StatusConsoleListener` use `SimpleLogger` internally</description>
+</entry>
diff --git a/log4j-changelog/src/test/resources/6-released/2.19.0/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml b/log4j-changelog/src/test/resources/6-released/2.19.0/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml
new file mode 100644
index 0000000..34111cf
--- /dev/null
+++ b/log4j-changelog/src/test/resources/6-released/2.19.0/LOG4J2-3614_Harden_InstantFormatter_against_delegate_failures.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License. You may obtain a copy of the License at
+
+      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.
+-->
+<entry xmlns="http://logging.apache.org/log4j/changelog"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://logging.apache.org/log4j/changelog https://logging.apache.org/log4j/changelog-0.1.0.xsd"
+       type="fixed">
+  <issue id="LOG4J2-3614" link="https://issues.apache.org/jira/browse/LOG4J2-3614"/>
+  <author id="vy"/>
+  <author name="strainu"/>
+  <description format="asciidoc">Harden `InstantFormatter` against delegate failures</description>
+</entry>
diff --git a/log4j-tools-parent/pom.xml b/log4j-tools-parent/pom.xml
index c2dbf46..7370dfe 100644
--- a/log4j-tools-parent/pom.xml
+++ b/log4j-tools-parent/pom.xml
@@ -53,6 +53,7 @@
 
     <!-- dependency versions -->
     <assertj.version>3.24.0</assertj.version>
+    <commons-io.version>2.11.0</commons-io.version>
     <freemarker.version>2.3.32</freemarker.version>
     <junit.version>5.9.2</junit.version>
     <maven-plugin.version>3.7.1</maven-plugin.version>
@@ -76,6 +77,12 @@
         <version>${assertj.version}</version>
       </dependency>
 
+      <dependency>
+        <groupId>commons-io</groupId>
+        <artifactId>commons-io</artifactId>
+        <version>${commons-io.version}</version>
+      </dependency>
+
       <dependency>
         <groupId>org.freemarker</groupId>
         <artifactId>freemarker</artifactId>


[logging-log4j-tools] 01/07: Fix `LICENSE.txt`

Posted by vy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git

commit 43d1d4eb374d4abd3cc71b874f55dc1abf2ed688
Author: Volkan Yazıcı <vo...@yazi.ci>
AuthorDate: Wed Jan 25 13:51:05 2023 +0100

    Fix `LICENSE.txt`
---
 LICENSE.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/LICENSE.txt b/LICENSE.txt
index 6279e52..d645695 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -187,7 +187,7 @@
       same "printed page" as the copyright notice for easier
       identification within third-party archives.
 
-   Copyright 1999-2005 The Apache Software Foundation
+   Copyright [yyyy] [name of copyright owner]
 
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.


[logging-log4j-tools] 07/07: Mark Maven plugin dependencies as `provided`

Posted by vy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git

commit 84ea2a0e19d8ddafdeeee18230b267adb66fdba9
Author: Volkan Yazıcı <vo...@yazi.ci>
AuthorDate: Wed Jan 25 17:18:42 2023 +0100

    Mark Maven plugin dependencies as `provided`
---
 log4j-tools-parent/pom.xml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/log4j-tools-parent/pom.xml b/log4j-tools-parent/pom.xml
index 7370dfe..4ba4df6 100644
--- a/log4j-tools-parent/pom.xml
+++ b/log4j-tools-parent/pom.xml
@@ -99,12 +99,14 @@
         <groupId>org.apache.maven.plugin-tools</groupId>
         <artifactId>maven-plugin-annotations</artifactId>
         <version>${maven-plugin.version}</version>
+        <scope>provided</scope>
       </dependency>
 
       <dependency>
         <groupId>org.apache.maven</groupId>
         <artifactId>maven-plugin-api</artifactId>
         <version>${maven-plugin-api.version}</version>
+        <scope>provided</scope>
       </dependency>
 
       <dependency>


[logging-log4j-tools] 02/07: Add `NOTICE.txt`

Posted by vy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git

commit 403396b0be2710ddae0f367465d82a777bb09754
Author: Volkan Yazıcı <vo...@yazi.ci>
AuthorDate: Wed Jan 25 13:51:14 2023 +0100

    Add `NOTICE.txt`
---
 NOTICE.txt  | 5 +++++
 README.adoc | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/NOTICE.txt b/NOTICE.txt
new file mode 100644
index 0000000..a6e8c2b
--- /dev/null
+++ b/NOTICE.txt
@@ -0,0 +1,5 @@
+Apache Log4j Tools
+Copyright 2022-2023 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
diff --git a/README.adoc b/README.adoc
index 24aeade..f8b8b92 100644
--- a/README.adoc
+++ b/README.adoc
@@ -50,7 +50,7 @@ See https://logging.apache.org/log4j/2.x/security.html[the Log4j Security page]
 == License
 
 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.
+See xref:NOTICE.txt[] 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[].
 


[logging-log4j-tools] 03/07: Fix unreleased directory order in `ChangelogExporter` (#17)

Posted by vy...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

vy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j-tools.git

commit d55e01107b2aaef3393375516dd9d897abeba241
Author: Volkan Yazıcı <vo...@yazi.ci>
AuthorDate: Wed Jan 25 14:15:54 2023 +0100

    Fix unreleased directory order in `ChangelogExporter` (#17)
---
 CHANGELOG.adoc                                                          | 2 ++
 .../org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java  | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc
index ed63ff4..1026fcf 100644
--- a/CHANGELOG.adoc
+++ b/CHANGELOG.adoc
@@ -17,6 +17,8 @@ limitations under the License.
 
 == Unreleased
 
+* Fixed unreleased directory order in `ChangelogExporter` (for https://github.com/apache/logging-log4j-tools/issues/17[#17] by Volkan Yazıcı)
+
 * Removed `security` as a change type from `log4j-changelog` (for https://github.com/apache/logging-log4j-tools/issues/14[#14] by Ralph Goers, Volkan Yazıcı)
 
 * Added XSD for `log4j-changelog` XML files (for https://github.com/apache/logging-log4j-tools/issues/13[#13] by Piotr P. Karwasz, Volkan Yazıcı)
diff --git a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
index bd9df9a..01f7637 100644
--- a/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
+++ b/log4j-changelog/src/main/java/org/apache/logging/log4j/changelog/exporter/ChangelogExporter.java
@@ -89,7 +89,7 @@ public final class ChangelogExporter {
         ChangelogFiles
                 .unreleasedDirectoryVersionMajors(args.changelogDirectory)
                 .stream()
-                .sorted(Comparator.reverseOrder())
+                .sorted()
                 .forEach(upcomingReleaseVersionMajor -> {
                     final Path upcomingReleaseDirectory =
                             ChangelogFiles.unreleasedDirectory(args.changelogDirectory, upcomingReleaseVersionMajor);