Development
This page shares information related to the development of Log4j. Content is aimed for users who want to contribute source code patches and maintainers.
| Do you need help for setting up or configuring Log4j? Please refer to the Support page instead. | 
GitHub setup
Log4j uses GitHub extensively:
- Source code repository
- Issue tracker
- Discussions
- 
https://github.com/apache/logging-log4j2/discussions Maintainer discussions mostly take place in mailing lists. Please refer to the Support page for the complete list of communication channels. 
Branching scheme
The following branching scheme is followed:
- 2.x
- 
The most recent Log4j 2 code 
- main
- 
The most recent Log4j 3 code 
- <sourceBranch>-site-<environment>
- <sourceBranch>-site-<environment>-out
- 
Branches used to serve the staging and production websites. out-suffixed ones are automatically populated by CI, you are not supposed to touch them. See the Logging Parent website for details.
- release/<version>
- 
Branch triggering the CI logic to start the release process 
I am not a committer. How shall I submit a patch?
- 
Is this a trivial fix such as code or documentation typo? Simply submit a pull request. Changelog entry is not needed and make sure ./mvnw verify sitesucceeds.
- 
Is this a non-trivial fix or a new feature? Pitch it in a maintainer discussion channel and ask for assistance. 
I am a committer. How shall I push my changes?
As per the PMC resolution on 2025-04-10, all changes must be submitted in a pull request and undergo peer review.
Make sure a changelog entry is attached, and ./mvnw verify site succeeds.
| You are strongly advised to spar with another maintainer first (see maintainer discussion channels) before starting to code. | 
I am a PMC member. How do I make a new release?
All Maven-based Logging Services projects are parented by Logging Parent, which streamlines several project-wide processes, including making a new release. See its release instructions for projects.
I am a PMC member. How do I publish a new XML schema?
All Maven-based Logging Services projects are parented by Logging Parent, which streamlines several project-wide processes, including publishing XML schemas. See its release instructions for XML schemas.
| Projects and XML schemas have different lifecycles! A new release of a project does not necessarily mean a new release of its XML schemas. XML schemas might have been untouched, or they might contain minor changes while the project itself contains breaking changes, etc. |