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

https://github.com/apache/logging-log4j2/tree/2.x

Issue tracker

https://github.com/apache/logging-log4j2/issues

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

How can I build Log4j from sources?

I am not a committer. How shall I submit a patch?

  1. 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 site succeeds.

  2. 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?

  1. Is it something trivial? Go ahead and push it.

  2. Otherwise, submit a pull request. 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.