| ## 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. |
| #set($h1='#') |
| #set($h2='##') |
| #set($h3='###') |
| #set($relVersion=$announceParameters.releaseVersion) |
| #set($relCount=$announceParameters.releaseCount) |
| #macro(formatAction $item) |
| ## Use replaceAll to fix up LF-only line ends on Windows. |
| ## Also replace < and > with entity versions to avoid HTML being misinterpreted. |
| #set($action=$item.action.replaceAll("\n"," |
| ").replaceAll("<", "<").replaceAll(">", ">")) |
| #if($item.issue) |
| #set($issue = $item.issue) |
| #set($url = "https://issues.apache.org/jira/browse/$issue") |
| #else |
| #set($issue = "") |
| #end |
| * #if($issue)[$issue]($url):#end |
| |
| ${action}#if($item.dueTo) Thanks to ${item.dueTo}.#end |
| |
| #end |
| ## ----------------------------------------- |
| $h1 Apache Log4j ${relVersion} Release Notes |
| |
| The ${developmentTeam} is pleased to announce the Log4j ${relVersion} release! |
| |
| Apache Log4j is a well known framework for logging application behavior. Log4j 2 is an upgrade |
| to Log4j that provides significant improvements over its predecessor, Log4j 1.x, and provides |
| many other modern features such as support for Markers, lambda expressions for lazy logging, |
| property substitution using Lookups, multiple patterns on a PatternLayout and asynchronous |
| Loggers. Another notable Log4j 2 feature is the ability to be "garbage-free" (avoid allocating |
| temporary objects) while logging. In addition, Log4j 2 will not lose events while reconfiguring. |
| |
| This release contains the first support of Java 9 as well as bugfixes and minor |
| enhancements. The Log4j API was modified to use java.util.ServiceLoader to locate Log4j implementations, |
| although the former binding mechanism is still supported. The Log4j jar is now a multi-release jar |
| to provide implementations of the Java 9 specific classes. Multi-release jars are not supported by |
| the OSGi specification so OSGi modules will not be able to take advantage of these implementations |
| but will not lose functionality as they will fall back to the implementations used in Java 7 and 8. |
| More details on the new features and fixes are itemized below. |
| |
| Note that subsequent to the 2.9 release, for security reasons, SerializedLayout is deprecated and no |
| longer used as default in the Socket and JMS appenders. SerializedLayout can still be used as before, |
| but has to be specified explicitly. To retain old behaviour, you have to change configuration like: |
| |
| <Appenders> |
| <Socket name="socket" host="localhost" port="9500"/> |
| </Appenders> |
| |
| into: |
| |
| <Appenders> |
| <Socket name="socket" host="localhost" port="9500"> |
| <SerializedLayout/> |
| </Socket> |
| </Appenders> |
| |
| We do, however, discourage the use of SerializedLayout and recommend JsonLayout as a replacement: |
| |
| <Appenders> |
| <Socket name="socket" host="localhost" port="9500"> |
| <JsonLayout properties="true"/> |
| </Socket> |
| </Appenders> |
| |
| Note that subsequent to the 2.9 release, for security reasons, Log4j does not process DTD in XML files. |
| If you used DTD for including snippets, you have to use XInclude or Composite Configuration instead. |
| |
| The Log4j ${relVersion} API, as well as many core components, maintains binary compatibility with previous releases. |
| |
| ## Hack to improve layout: replace all pairs of spaces with a single new-line |
| $h2 $release.description.replaceAll(" ", " |
| ") |
| |
| #if ($release.actions.size() == 0) |
| No changes defined in this version. |
| #else |
| Changes in this version include: |
| |
| #if ($release.getActions('add').size() !=0) |
| $h3 New Features |
| #foreach($actionItem in $release.getActions('add')) |
| #formatAction($actionItem) |
| #end |
| #end |
| |
| #if ($release.getActions('fix').size() !=0) |
| $h3 Fixed Bugs |
| #foreach($actionItem in $release.getActions('fix')) |
| #formatAction($actionItem) |
| #end |
| #end |
| |
| #if ($release.getActions('update').size() !=0) |
| $h3 Changes |
| #foreach($actionItem in $release.getActions('update')) |
| #formatAction($actionItem) |
| #end |
| #end |
| |
| #if ($release.getActions('remove').size() !=0) |
| $h3 Removed |
| #foreach($actionItem in $release.getActions('remove')) |
| #formatAction($actionItem) |
| #end |
| #end |
| ## End of main loop |
| #end |
| --- |
| |
| Apache Log4j ${relVersion} requires a minimum of Java 7 to build and run. Log4j 2.3 was the |
| last release that supported Java 6. |
| |
| Basic compatibility with Log4j 1.x is provided through the log4j-1.2-api component, however it |
| does not implement some of the very implementation specific classes and methods. The package |
| names and Maven groupId have been changed to org.apache.logging.log4j to avoid any conflicts |
| with log4j 1.x. |
| |
| For complete information on ${project.name}, including instructions on how to submit bug |
| reports, patches, or suggestions for improvement, see the Apache ${project.name} website: |
| |
| ${project.url} |