|
| 1 | +//// |
| 2 | + Licensed to the Apache Software Foundation (ASF) under one or more |
| 3 | + contributor license agreements. See the NOTICE file distributed with |
| 4 | + this work for additional information regarding copyright ownership. |
| 5 | + The ASF licenses this file to You under the Apache License, Version 2.0 |
| 6 | + (the "License"); you may not use this file except in compliance with |
| 7 | + the License. You may obtain a copy of the License at |
| 8 | + |
| 9 | + http://www.apache.org/licenses/LICENSE-2.0 |
| 10 | + |
| 11 | + Unless required by applicable law or agreed to in writing, software |
| 12 | + distributed under the License is distributed on an "AS IS" BASIS, |
| 13 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 14 | + See the License for the specific language governing permissions and |
| 15 | + limitations under the License. |
| 16 | +//// |
| 17 | +
|
| 18 | += Versioning and support policy |
| 19 | +
|
| 20 | +== Versioning |
| 21 | +
|
| 22 | +Apache Log4j releases follow the |
| 23 | +https://semver.org/spec/v2.0.0.html[Semantic Versioning specification], which means that the release numbering is of the form: |
| 24 | +
|
| 25 | +[source] |
| 26 | +---- |
| 27 | +<major>.<minor>.<patch>[-<pre-release>] |
| 28 | +---- |
| 29 | +
|
| 30 | +where: |
| 31 | +
|
| 32 | +<major>:: |
| 33 | ++ |
| 34 | +Is the major version number. |
| 35 | +This number is incremented when **breaking changes** are introduced to the software. |
| 36 | ++ |
| 37 | +Upgrading to a new major release might require code changes. |
| 38 | +See |
| 39 | +xref:migrate-from-log4j1.adoc[] |
| 40 | +to migrate from Log4j 1 to Log4j 2. |
| 41 | +
|
| 42 | +<minor>:: |
| 43 | ++ |
| 44 | +Is the minor version number. |
| 45 | +This number is incremented each time: |
| 46 | ++ |
| 47 | +-- |
| 48 | +* A new Java method/class appears in the public API of one of the |
| 49 | +xref:components.adoc[Log4j artifacts]. |
| 50 | +* A new configuration attribute is added to one of the |
| 51 | +xref:manual/plugins.adoc[Log4j Plugins (appenders, layouts, filters, etc.)]. |
| 52 | +* A functionality or Java method/class are deprecated. |
| 53 | +* A behavioral change is introduced. |
| 54 | +-- |
| 55 | ++ |
| 56 | +When upgrading to a new minor version, check the |
| 57 | +xref:release-notes.adoc[] |
| 58 | +of the new minor version: behavioral changes are highlighted in the release description and contained in the "Changed" section. |
| 59 | +
|
| 60 | +<patch>:: |
| 61 | ++ |
| 62 | +Is the patch release number. |
| 63 | +This number is incremented if the release only contains bug fixes. |
| 64 | ++ |
| 65 | +Upgrading to a new patch release constitutes the easiest upgrade path. |
| 66 | ++ |
| 67 | +[NOTE] |
| 68 | +==== |
| 69 | +The classification of behavioral changes as minor or patch release is up to interpretation: what constitutes a bug for one user might be a feature for somebody else. |
| 70 | +==== |
| 71 | +
|
| 72 | +=== OSGi package versioning |
| 73 | +
|
| 74 | +Since release `2.21.0` Log4j follows the OSGi practice of versioning each Java package separately (see |
| 75 | +https://bnd.bndtools.org/chapters/170-versioning.html#versioning-packages[Versioning Packages] for more information). |
| 76 | +The version of each package is available in the manifests of each artifact and in the Javadoc of each package: e.g. the version of the `o.a.l.l.core.appender` package is available in the |
| 77 | +link:javadoc/log4j-core/org/apache/logging/log4j/core/appender/package-summary.html[package summary Javadoc page]. |
| 78 | +
|
| 79 | +Package versions are in the form `X.Y.Z`, where the `X.Y` part corresponds to the Apache Log4j version that contained the last modifications in the public API of the package. |
| 80 | +For example, if a package has version `2.34.5` **all** the functionality of the package has been available since Log4j `2.34.0`. |
| 81 | +
|
| 82 | +== Version compatibility |
| 83 | +
|
| 84 | +Due to the separation between |
| 85 | +xref:manual/api.adoc[Log4j API] |
| 86 | +and |
| 87 | +xref:manual/implementation.adoc[implementation] |
| 88 | +the versions of the `log4j-api` and `log4j-core` artifacts at **runtime** must be aligned: |
| 89 | +
|
| 90 | +* Log4j Core version X depends on Log4j API version X, so you need to have **at least** version X of Log4j API at runtime. |
| 91 | +* Conversely, to be able to use all the methods provided by Log4j API X, you need to have a version of Log4j Core that implements those methods, i.e., Log4j Core X or later. |
| 92 | +
|
| 93 | +The easiest way to ensure version alignement in your project is to use the |
| 94 | +xref:components.adoc#log4j-bom[`log4j-bom` artifact] |
| 95 | +in your build tool. |
| 96 | +The usage of `log4j-bom` guarantees that the correct versions will be chosen, regardless of the conflict resolution algorithm used by your tool. |
| 97 | +
|
| 98 | +== Support policy |
| 99 | +
|
| 100 | +Apache Log4j currently supports two versions: Apache Log4j 2.x and the incubating Apache Log4j Core 3.x as in the table below: |
| 101 | +
|
| 102 | +[cols="1,1,1m,1,1"] |
| 103 | +|=== |
| 104 | +| Version | Status | Latest release | General availability | End-of-life |
| 105 | +
|
| 106 | +| 3.x |
| 107 | +| Pre-release |
| 108 | +| 3.0.0-beta3 |
| 109 | +| |
| 110 | +| |
| 111 | +
|
| 112 | +| 2.x |
| 113 | +| Active |
| 114 | +| {log4j-core-version} |
| 115 | +| July 12, 2014 |
| 116 | +| |
| 117 | +
|
| 118 | +| 2.12.x |
| 119 | +| **EOS** |
| 120 | +| 2.12.4 |
| 121 | +| June 23, 2019 |
| 122 | +| December 28, 2021 |
| 123 | +
|
| 124 | +| 2.3.x |
| 125 | +| **EOS** |
| 126 | +| 2.3.2 |
| 127 | +| May 9, 2015 |
| 128 | +| December 29, 2021 |
| 129 | +
|
| 130 | +| 1.x |
| 131 | +| **EOL** |
| 132 | +| 1.2.17 |
| 133 | +| January 8, 2000 |
| 134 | +| August 5, 2015 |
| 135 | +
|
| 136 | +|=== |
| 137 | +
|
| 138 | +The levels of support for each release train are: |
| 139 | +
|
| 140 | +Pre-release:: |
| 141 | ++ |
| 142 | +The version is under active development, but it is not recommended to use it in production. |
| 143 | +
|
| 144 | +Active:: |
| 145 | ++ |
| 146 | +The version is under active development. |
| 147 | +
|
| 148 | +EOS:: |
| 149 | ++ |
| 150 | +The version will not receive any updates, including security updates. |
| 151 | +New security advisories against this version might be published in the future. |
| 152 | +
|
| 153 | +EOL:: |
| 154 | ++ |
| 155 | +The version will not receive any updates, including security updates. |
| 156 | +No new security advisories will be published for it. |
0 commit comments