[ANNOUNCEMENT] (Corrected) Apache Log4j 2.11.0 released

Ralph Goers <[email protected]> Fri, 16 Mar 2018 17:49:00 -0700
Newsgroups gmane.comp.jakarta.log4j.user,gmane.comp.jakarta.lucene.net.devel,gmane.comp.apache.logging
Message-ID <5067409B-DC00-4A0F-AA71-CF01DA125FC0__21747.526250738$1521247642$gmane$org@dslextreme.com>
--Apple-Mail=_580862F2-5CF1-49EF-8216-D2A3C4037DCE
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

The Apache Log4j 2 team is pleased to announce the Log4j 2.11.0 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 new features, bugfixes and minor enhancements.

As of Log4j 2.9.0, the Log4j API was modified to use =
java.util.ServiceLoader to locate Log4j implementations, although the =
former binding mechanism is still supported. The Log4j API jar is now a =
multi-release jar to provide implementations of 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 some tools are not compatible =
with multi-release jars and may fail trying to process class files in =
the META-INF/versions/9 folder. Those errors should be reported to the =
tool vendor.

Note that subsequent to the 2.9.0 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=3D"socket" host=3D"localhost" port=3D"9500"/>
</Appenders>
into:

<Appenders>
  <Socket name=3D"socket" host=3D"localhost" port=3D"9500">
    <SerializedLayout/>
  </Socket>
</Appenders>
We do, however, discourage the use of SerializedLayout and recommend =
JsonLayout as a replacement:

<Appenders>
  <Socket name=3D"socket" host=3D"localhost" port=3D"9500">
    <JsonLayout properties=3D"true"/>
  </Socket>
</Appenders>
Note that the XML, JSON and YAML formats changed in the 2.11.0 release: =
they no longer have the "timeMillis" attribute and instead have an =
"Instant" element with "epochSecond" and "nanoOfSecond" attributes.

Note that subsequent to the 2.9.0 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 2.11.0 API, as well as many core components, maintains binary =
compatibility with previous releases with the following exceptions to =
Log4j Core. Log4j 2.11.0 moves code from log4j-core to several new Maven =
modules. Dependencies to other jars that used to be optional in =
log4j-core are now required in the new modules. The code in these =
modules have been repackaged. These changes do not affect your =
configuration files.

The new modules are:

log4j-jdbc-dbc2
    =E2=80=A2 Group ID: org.apache.logging.log4j
    =E2=80=A2 Artifact ID: log4j-jdbc-dbc2
    =E2=80=A2 Old package: =
org.apache.logging.log4j.core.appender.db.jdbc
    =E2=80=A2 New package: org.apache.logging.log4j.jdbc.appender

log4j-jpa
    =E2=80=A2 Group ID: org.apache.logging.log4j
    =E2=80=A2 Artifact ID: log4j-jpa
    =E2=80=A2 Old package 1: =
org.apache.logging.log4j.core.appender.db.jpa
    =E2=80=A2 New package 1: org.apache.logging.log4j.jpa.appender
    =E2=80=A2 Old package 2: =
org.apache.logging.log4j.core.appender.db.jpa.converter
    =E2=80=A2 New package 2: org.apache.logging.log4j.jpa.converter

log4j-mongodb2
    =E2=80=A2 Group ID: org.apache.logging.log4j
    =E2=80=A2 Artifact ID: log4j-mongodb2
    =E2=80=A2 Old package: org.apache.logging.log4j.mongodb
    =E2=80=A2 New package: org.apache.logging.log4j.mongodb2

log4j-mongodb3
    =E2=80=A2 Group ID: org.apache.logging.log4j
    =E2=80=A2 Artifact ID: log4j-mongodb3
    =E2=80=A2 Old package: org.apache.logging.log4j.mongodb
    =E2=80=A2 New package: org.apache.logging.log4j.mongodb3

GA Release 2.11.0

Changes in this version include:

New Features
LOG4J2-2253: Add API to enable iterating over message parameters without =
creating temporary objects. Thanks to Carter Kozak.
LOG4J2-1883: Added support for precise (micro and nanosecond) timestamps =
when running on Java 9. A limited number of precise %d date formats are =
supported with PatternLayout. POTENTIAL BREAKING CHANGE: The XML, JSON =
and YAML formats have changed: they no longer have the "timeMillis" =
attribute and instead have an "Instant" element with "epochSecond" and =
"nanoOfSecond" attributes. Thanks to Anthony Maire.
LOG4J2-2190: Output JSON object for ObjectMessage in JsonLayout. Thanks =
to Franz Wong.
LOG4J2-2191: Made log4j-core a multi-release ("multi-version") jar, =
added log4j-core-java9 module.
LOG4J2-2143: Add missing converters to PatternLayout.
LOG4J2-2160: Add API =
org.apache.logging.log4j.core.lookup.Interpolator.getStrLookupMap().
LOG4J2-2179: The MongoDB Appender should use a keys and values for a =
Log4j MapMessage.
LOG4J2-2180: Add a MongoDbProvider builder for and deprecate =
org.apache.logging.log4j.mongodb.MongoDbProvider.createNoSqlProvider().
LOG4J2-2181: The JDBC Appender should use keys and values from a Log4j =
MapMessage.
LOG4J2-2185: Add a simple JDBC DriverManager-based ConnectionSource that =
uses JDBC's DriverManager#getConnection(String, String, String).
LOG4J2-2186: Add a JDBC ConnectionSource that provides pooling through =
Apache Commons DBCP 2.
LOG4J2-2187: Add a hook for a Connection Source for a JDBC Appender to =
release its resources.
LOG4J2-2203: Add =
org.apache.logging.log4j.core.util.WatchManager#unwatch(File).
LOG4J2-2206: Add method =
org.apache.logging.log4j.core.util.WatchManager.reset(File) and reset().
LOG4J2-2208: Add debug logging to =
org.apache.logging.log4j.mongodb.MongoDbConnection.
Fixed Bugs
LOG4J2-2271: Move module-info.class to META-INF/versions/9 directory.
LOG4J2-2254: Incorrect automatics module name header was being included =
in manifests.
LOG4J2-2247: NullPointerException would occur when header was provided =
to a Layout on RollingRandingAccessFileAppender with =
DirectWriteRolloverStrategy.
LOG4J2-2129: Log4j2 throws NoClassDefFoundError in Java 9 in =
java.util.ServiceLoader. Thanks to Blazej Bucko.
LOG4J2-2158: Fixed bug where ThreadContext map was cleared, resulting in =
entries being only available for one log event. Thanks to Bj=C3=B6rn =
Kautler.
LOG4J2-2002: Avoid null attribute values in DefaultConfigurationBuilder. =
Thanks to Paul Burrowes.
LOG4J2-2175: Fix typo in Property Substitution docs. Thanks to Behrang =
Saeedzadeh.
LOG4J2-2163: Allow SortedArrayStringMap to be filtered upon =
deserialization. Fix build error in Java 9 when compiling log4j-core =
test classes.
LOG4J2-2157: Don't create exit message in traceExit(R) when logging is =
disabled. Thanks to Malte Skoruppa.
LOG4J2-2123: DefaultMergeStrategy did not merge filters on loggers =
correctly. Thanks to Jacob Tolar.
LOG4J2-2126: Removed compile-time dependency on Java Management APIs =
from Log4J API module to improve compatibility with Android Platform =
which does not support JMX extensions. Thanks to Oleg Kalnichevski.
LOG4J2-2270: Strings::join, when called with [null] returns "null" =
instead of EMPTY. Thanks to Cyril Martin.
LOG4J2-2276: ConcurrentModificationException from =
org.apache.logging.log4j.status.StatusLogger.<clinit>(StatusLogger.java:71=
). Thanks to Sean Baxter.
LOG4J2-2274: Allow EnvironmentPropertySource to run with a =
SecurityManager that rejects environment variable access. Thanks to =
Sebastien Lannez.
LOG4J2-2279: Allow SystemPropertiesPropertySource to run with a =
SecurityManager that rejects system property access. Thanks to Gary =
Gregory.
Changes
LOG4J2-2273: Documentation fix in manual page for custom configurations. =
Thanks to Bruno P. Kinoshita.
LOG4J2-2252: Reusable LogEvents now pass the original format string to =
downstream components like layouts and filters. Thanks to Carter Kozak.
LOG4J2-2250: The internal status logger timestamp format is now =
configurable with system property log4j2.StatusLogger.DateFormat.
LOG4J2-2236: Removed unnecessary dependency on jcommander since Log4j =
uses embedded picocli since 2.9.
LOG4J2-2146: Update version of maven bundle plugin to 3.4.0. Convert =
bundle plugin error to a warning.
LOG4J2-2215: Reduce compiler warnings in log4j-api.
LOG4J2-2127: Removed unnecessary threadlocal StringBuilder field from =
MdcPatternConverter. Thanks to Carter Kozak.
LOG4J2-2194: Require Java 9 to compile the log4j-perf module to allow =
benchmarking with Java 9 APIs.
LOG4J2-2193: Update JMH to version 1.19 from 1.1.1.
LOG4J2-2132: Update ZeroMQ's jeromq from 0.4.2 to 0.4.3.
LOG4J2-2165: Update Jackson from 2.9.2 to 2.9.3.
LOG4J2-2184: Update MongoDB driver from 3.0.4 to 3.6.1.
LOG4J2-2197: Document default property value support. Thanks to Fabrice =
Daugan.
LOG4J2-2198: Update MongoDB dependencies from classic to modern.
LOG4J2-2204: =
org.apache.logging.log4j.core.util.WatchManager.getWatchers() should =
pre-allocate its new Map.
LOG4J2-2209: Rename existing MongoDb plugin and related artifacts from =
MongoDb to MongoDb2.
LOG4J2-2210: Fix error log message for Script which says ScriptFile =
instead. Thanks to Bj=C3=B6rn Kautler.
LOG4J2-2212: Unnecessary contention in =
CopyOnWriteSortedArrayThreadContextMap. Thanks to Daniel Feist, Gary =
Gregory.
LOG4J2-2213: Unnecessary contention in =
GarbageFreeSortedArrayThreadContextMap. Thanks to Daniel Feist, Gary =
Gregory.
LOG4J2-2214: Unnecessary contention in DefaultThreadContextMap. Thanks =
to Daniel Feist, Gary Gregory.
LOG4J2-2182: NullPointerException at =
org.apache.logging.log4j.util.Activator.loadProvider(Activator.java:81) =
in log4j 2.10.0. Thanks to liwenxian2017, Gary Gregory.
LOG4J2-2202: MarkerFilter onMismatch invalid attribute in .properties. =
Thanks to Kilian, Gary Gregory.
LOG4J2-2219: Configuration builder classes should look for "onMismatch", =
not "onMisMatch". Thanks to Kilian, Gary Gregory.
LOG4J2-2205: New module log4j-mongodb3: Remove use of deprecated MongoDB =
APIs and code to the Java driver version 3 API. Thanks to Gary Gregory.
LOG4J2-2188: Split off JPA support into a new module log4j-jpa. Thanks =
to Gary Gregory.
LOG4J2-2229: Update Jackson from 2.9.3 to 2.9.4. Thanks to Gary Gregory.
LOG4J2-2243: Cannot see or copy all of certain JAnsi exception messages =
on Windows due to NUL characters. Thanks to Gary Gregory.
LOG4J2-2245: Update Apache Commons Compress from 1.15 to 1.16.1. Thanks =
to Gary Gregory.
LOG4J2-2259: Update MongoDB 3 module from driver 3.6.1 to 3.6.3.
LOG4J2-2260: [SMTP] Update javax.mail from 1.6.0 to 1.6.1.
LOG4J2-2264: Update JAnsi from 1.16 to 1.17.

Apache Log4j 2.11.0 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 Apache Log4j 2, including instructions on =
how to submit bug reports, patches, or suggestions for improvement, see =
the Apache Apache Log4j 2 website:

https://logging.apache.org/log4j/2.x/



--Apple-Mail=_580862F2-5CF1-49EF-8216-D2A3C4037DCE
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D""><font=
 face=3D"Helvetica" class=3D"">The Apache Log4j 2 team is pleased to =
announce the Log4j 2.11.0 release!<br class=3D"">
  <br class=3D"">
Apache Log4j is a well known framework for logging application behavior.
 Log4j 2 is an upgrade to Log4j that provides significant improvements=20=

over its predecessor, Log4j 1.x, and provides many other modern features
 such as support for Markers, lambda expressions for lazy logging,=20
property substitution using Lookups, multiple patterns on a=20
PatternLayout and asynchronous Loggers. Another notable Log4j 2 feature=20=

is the ability to be "garbage-free" (avoid allocating temporary objects)
 while logging. In addition, Log4j 2 will not lose events while=20
reconfiguring.<br class=3D"">
  <br class=3D"">
This release contains new features, bugfixes and minor enhancements.<br =
class=3D"">
  <br class=3D"">
As of Log4j 2.9.0, the Log4j API was modified to use=20
java.util.ServiceLoader to locate Log4j implementations, although the=20
former binding mechanism is still supported. The Log4j API jar is now a=20=

multi-release jar to provide implementations of Java 9 specific classes.
 Multi-release jars are not supported by the OSGi specification so OSGi=20=

modules will not be able to take advantage of these implementations but=20=

will not lose functionality as they will fall back to the=20
implementations used in Java 7 and 8. More details on the new features=20=

and fixes are itemized below. Note that some tools are not compatible=20
with multi-release jars and may fail trying to process class files in=20
the META-INF/versions/9 folder. Those errors should be reported to the=20=

tool vendor.<br class=3D"">
  <br class=3D"">
Note that subsequent to the 2.9.0 release, for security reasons,=20
SerializedLayout is deprecated and no longer used as default in the=20
Socket and JMS appenders. SerializedLayout can still be used as before,=20=

but has to be specified explicitly. To retain old behaviour, you have to
 change configuration like:<br class=3D"">
  <br class=3D"">
&lt;Appenders&gt;<br class=3D"">
&nbsp; &lt;Socket name=3D"socket" host=3D"localhost" port=3D"9500"/&gt;<br=
 class=3D"">
&lt;/Appenders&gt;<br class=3D"">
into:<br class=3D"">
  <br class=3D"">
&lt;Appenders&gt;<br class=3D"">
&nbsp; &lt;Socket name=3D"socket" host=3D"localhost" port=3D"9500"&gt;<br =
class=3D"">
&nbsp;&nbsp;&nbsp; &lt;SerializedLayout/&gt;<br class=3D"">
&nbsp; &lt;/Socket&gt;<br class=3D"">
&lt;/Appenders&gt;<br class=3D"">
We do, however, discourage the use of SerializedLayout and recommend =
JsonLayout as a replacement:<br class=3D"">
  <br class=3D"">
&lt;Appenders&gt;<br class=3D"">
&nbsp; &lt;Socket name=3D"socket" host=3D"localhost" port=3D"9500"&gt;<br =
class=3D"">
&nbsp;&nbsp;&nbsp; &lt;JsonLayout properties=3D"true"/&gt;<br class=3D"">
&nbsp; &lt;/Socket&gt;<br class=3D"">
&lt;/Appenders&gt;<br class=3D"">
Note that the XML, JSON and YAML formats changed in the 2.11.0 release:=20=

they no longer have the "timeMillis" attribute and instead have an=20
"Instant" element with "epochSecond" and "nanoOfSecond" attributes.<br =
class=3D"">
  <br class=3D"">
Note that subsequent to the 2.9.0 release, for security reasons, Log4j=20=

does not process DTD in XML files. If you used DTD for including=20
snippets, you have to use XInclude or Composite Configuration =
instead.<br class=3D"">
  <br class=3D"">
The Log4j 2.11.0 API, as well as many core components, maintains binary=20=

compatibility with previous releases with the following exceptions to=20
Log4j Core. Log4j 2.11.0 moves code from log4j-core to several new Maven
 modules. Dependencies to other jars that used to be optional in=20
log4j-core are now required in the new modules. The code in these=20
modules have been repackaged. These changes do not affect your=20
configuration files.<br class=3D"">
  <br class=3D"">
The new modules are:<br class=3D"">
  <br class=3D"">
log4j-jdbc-dbc2<br class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 Group ID: org.apache.logging.log4j<br =
class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 Artifact ID: log4j-jdbc-dbc2<br class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 Old package: =
org.apache.logging.log4j.core.appender.db.jdbc<br class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 New package: =
org.apache.logging.log4j.jdbc.appender<br class=3D"">
  <br class=3D"">
log4j-jpa<br class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 Group ID: org.apache.logging.log4j<br =
class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 Artifact ID: log4j-jpa<br class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 Old package 1: =
org.apache.logging.log4j.core.appender.db.jpa<br class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 New package 1: =
org.apache.logging.log4j.jpa.appender<br class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 Old package 2: =
org.apache.logging.log4j.core.appender.db.jpa.converter<br class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 New package 2: =
org.apache.logging.log4j.jpa.converter<br class=3D"">
  <br class=3D"">
log4j-mongodb2<br class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 Group ID: org.apache.logging.log4j<br =
class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 Artifact ID: log4j-mongodb2<br class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 Old package: =
org.apache.logging.log4j.mongodb<br class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 New package: =
org.apache.logging.log4j.mongodb2<br class=3D"">
  <br class=3D"">
log4j-mongodb3<br class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 Group ID: org.apache.logging.log4j<br =
class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 Artifact ID: log4j-mongodb3<br class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 Old package: =
org.apache.logging.log4j.mongodb<br class=3D"">
&nbsp;&nbsp;&nbsp; =E2=80=A2 New package: =
org.apache.logging.log4j.mongodb3<br class=3D"">
  <br class=3D"">
GA Release 2.11.0<br class=3D"">
  <br class=3D"">
Changes in this version include:<br class=3D"">
  <br class=3D"">
New Features<br class=3D"">
LOG4J2-2253: Add API to enable iterating over message parameters without =
creating temporary objects. Thanks to Carter Kozak.<br class=3D"">
LOG4J2-1883: Added support for precise (micro and nanosecond) timestamps
 when running on Java 9. A limited number of precise %d date formats are
 supported with PatternLayout. POTENTIAL BREAKING CHANGE: The XML, JSON=20=

and YAML formats have changed: they no longer have the "timeMillis"=20
attribute and instead have an "Instant" element with "epochSecond" and=20=

"nanoOfSecond" attributes. Thanks to Anthony Maire.<br class=3D"">
LOG4J2-2190: Output JSON object for ObjectMessage in JsonLayout. Thanks =
to Franz Wong.<br class=3D"">
LOG4J2-2191: Made log4j-core a multi-release ("multi-version") jar, =
added log4j-core-java9 module.<br class=3D"">
LOG4J2-2143: Add missing converters to PatternLayout.<br class=3D"">
LOG4J2-2160: Add API =
org.apache.logging.log4j.core.lookup.Interpolator.getStrLookupMap().<br =
class=3D"">
LOG4J2-2179: The MongoDB Appender should use a keys and values for a =
Log4j MapMessage.<br class=3D"">
LOG4J2-2180: Add a MongoDbProvider builder for and deprecate=20
=
org.apache.logging.log4j.mongodb.MongoDbProvider.createNoSqlProvider().<br=
 class=3D"">
LOG4J2-2181: The JDBC Appender should use keys and values from a Log4j =
MapMessage.<br class=3D"">
LOG4J2-2185: Add a simple JDBC DriverManager-based ConnectionSource that
 uses JDBC's DriverManager#getConnection(String, String, String).<br =
class=3D"">
LOG4J2-2186: Add a JDBC ConnectionSource that provides pooling through =
Apache Commons DBCP 2.<br class=3D"">
LOG4J2-2187: Add a hook for a Connection Source for a JDBC Appender to =
release its resources.<br class=3D"">
LOG4J2-2203: Add =
org.apache.logging.log4j.core.util.WatchManager#unwatch(File).<br =
class=3D"">
LOG4J2-2206: Add method =
org.apache.logging.log4j.core.util.WatchManager.reset(File) and =
reset().<br class=3D"">
LOG4J2-2208: Add debug logging to =
org.apache.logging.log4j.mongodb.MongoDbConnection.<br class=3D"">
Fixed Bugs<br class=3D"">
LOG4J2-2271: Move module-info.class to META-INF/versions/9 directory.<br =
class=3D"">
LOG4J2-2254: Incorrect automatics module name header was being included =
in manifests.<br class=3D"">
LOG4J2-2247: NullPointerException would occur when header was provided=20=

to a Layout on RollingRandingAccessFileAppender with=20
DirectWriteRolloverStrategy.<br class=3D"">
LOG4J2-2129: Log4j2 throws NoClassDefFoundError in Java 9 in =
java.util.ServiceLoader. Thanks to Blazej Bucko.<br class=3D"">
LOG4J2-2158: Fixed bug where ThreadContext map was cleared, resulting in
 entries being only available for one log event. Thanks to Bj=C3=B6rn=20
Kautler.<br class=3D"">
LOG4J2-2002: Avoid null attribute values in DefaultConfigurationBuilder. =
Thanks to Paul Burrowes.<br class=3D"">
LOG4J2-2175: Fix typo in Property Substitution docs. Thanks to Behrang =
Saeedzadeh.<br class=3D"">
LOG4J2-2163: Allow SortedArrayStringMap to be filtered upon=20
deserialization. Fix build error in Java 9 when compiling log4j-core=20
test classes.<br class=3D"">
LOG4J2-2157: Don't create exit message in traceExit(R) when logging is =
disabled. Thanks to Malte Skoruppa.<br class=3D"">
LOG4J2-2123: DefaultMergeStrategy did not merge filters on loggers =
correctly. Thanks to Jacob Tolar.<br class=3D"">
LOG4J2-2126: Removed compile-time dependency on Java Management APIs=20
from Log4J API module to improve compatibility with Android Platform=20
which does not support JMX extensions. Thanks to Oleg Kalnichevski.<br =
class=3D"">
LOG4J2-2270: Strings::join, when called with [null] returns "null" =
instead of EMPTY. Thanks to Cyril Martin.<br class=3D"">
LOG4J2-2276: ConcurrentModificationException from=20
=
org.apache.logging.log4j.status.StatusLogger.&lt;clinit&gt;(StatusLogger.j=
ava:71).
 Thanks to Sean Baxter.<br class=3D"">
LOG4J2-2274: Allow EnvironmentPropertySource to run with a=20
SecurityManager that rejects environment variable access. Thanks to=20
Sebastien Lannez.<br class=3D"">
LOG4J2-2279: Allow SystemPropertiesPropertySource to run with a=20
SecurityManager that rejects system property access. Thanks to Gary=20
Gregory.<br class=3D"">
Changes<br class=3D"">
LOG4J2-2273: Documentation fix in manual page for custom configurations. =
Thanks to Bruno P. Kinoshita.<br class=3D"">
LOG4J2-2252: Reusable LogEvents now pass the original format string to=20=

downstream components like layouts and filters. Thanks to Carter =
Kozak.<br class=3D"">
LOG4J2-2250: The internal status logger timestamp format is now=20
configurable with system property log4j2.StatusLogger.DateFormat.<br =
class=3D"">
LOG4J2-2236: Removed unnecessary dependency on jcommander since Log4j =
uses embedded picocli since 2.9.<br class=3D"">
LOG4J2-2146: Update version of maven bundle plugin to 3.4.0. Convert =
bundle plugin error to a warning.<br class=3D"">
LOG4J2-2215: Reduce compiler warnings in log4j-api.<br class=3D"">
LOG4J2-2127: Removed unnecessary threadlocal StringBuilder field from =
MdcPatternConverter. Thanks to Carter Kozak.<br class=3D"">
LOG4J2-2194: Require Java 9 to compile the log4j-perf module to allow =
benchmarking with Java 9 APIs.<br class=3D"">
LOG4J2-2193: Update JMH to version 1.19 from 1.1.1.<br class=3D"">
LOG4J2-2132: Update ZeroMQ's jeromq from 0.4.2 to 0.4.3.<br class=3D"">
LOG4J2-2165: Update Jackson from 2.9.2 to 2.9.3.<br class=3D"">
LOG4J2-2184: Update MongoDB driver from 3.0.4 to 3.6.1.<br class=3D"">
LOG4J2-2197: Document default property value support. Thanks to Fabrice =
Daugan.<br class=3D"">
LOG4J2-2198: Update MongoDB dependencies from classic to modern.<br =
class=3D"">
LOG4J2-2204: =
org.apache.logging.log4j.core.util.WatchManager.getWatchers() should =
pre-allocate its new Map.<br class=3D"">
LOG4J2-2209: Rename existing MongoDb plugin and related artifacts from =
MongoDb to MongoDb2.<br class=3D"">
LOG4J2-2210: Fix error log message for Script which says ScriptFile =
instead. Thanks to Bj=C3=B6rn Kautler.<br class=3D"">
LOG4J2-2212: Unnecessary contention in =
CopyOnWriteSortedArrayThreadContextMap. Thanks to Daniel Feist, Gary =
Gregory.<br class=3D"">
LOG4J2-2213: Unnecessary contention in =
GarbageFreeSortedArrayThreadContextMap. Thanks to Daniel Feist, Gary =
Gregory.<br class=3D"">
LOG4J2-2214: Unnecessary contention in DefaultThreadContextMap. Thanks =
to Daniel Feist, Gary Gregory.<br class=3D"">
LOG4J2-2182: NullPointerException at=20
org.apache.logging.log4j.util.Activator.loadProvider(Activator.java:81)=20=

in log4j 2.10.0. Thanks to liwenxian2017, Gary Gregory.<br class=3D"">
LOG4J2-2202: MarkerFilter onMismatch invalid attribute in .properties. =
Thanks to Kilian, Gary Gregory.<br class=3D"">
LOG4J2-2219: Configuration builder classes should look for "onMismatch", =
not "onMisMatch". Thanks to Kilian, Gary Gregory.<br class=3D"">
LOG4J2-2205: New module log4j-mongodb3: Remove use of deprecated MongoDB
 APIs and code to the Java driver version 3 API. Thanks to Gary =
Gregory.<br class=3D"">
LOG4J2-2188: Split off JPA support into a new module log4j-jpa. Thanks =
to Gary Gregory.<br class=3D"">
LOG4J2-2229: Update Jackson from 2.9.3 to 2.9.4. Thanks to Gary =
Gregory.<br class=3D"">
LOG4J2-2243: Cannot see or copy all of certain JAnsi exception messages=20=

on Windows due to NUL characters. Thanks to Gary Gregory.<br class=3D"">
LOG4J2-2245: Update Apache Commons Compress from 1.15 to 1.16.1. Thanks =
to Gary Gregory.<br class=3D"">
LOG4J2-2259: Update MongoDB 3 module from driver 3.6.1 to 3.6.3.<br =
class=3D"">
LOG4J2-2260: [SMTP] Update javax.mail from 1.6.0 to 1.6.1.<br class=3D"">
LOG4J2-2264: Update JAnsi from 1.16 to 1.17.<br class=3D"">
  <br class=3D"">
Apache Log4j 2.11.0 requires a minimum of Java 7 to build and run. Log4j =
2.3 was the last release that supported Java 6.<br class=3D"">
  <br class=3D"">
Basic compatibility with Log4j 1.x is provided through the log4j-1.2-api
 component, however it does not implement some of the very=20
implementation specific classes and methods. The package names and Maven
 groupId have been changed to org.apache.logging.log4j to avoid any=20
conflicts with log4j 1.x.<br class=3D"">
  <br class=3D"">
For complete information on Apache Log4j 2, including instructions on=20
how to submit bug reports, patches, or suggestions for improvement, see=20=

the Apache Apache Log4j 2 website:<br class=3D"">
  <br class=3D"">
<a href=3D"https://logging.apache.org/log4j/2.x/" =
class=3D"">https://logging.apache.org/log4j/2.x/</a></font><br class=3D"">=

<br class=3D"">
<div class=3D""><br class=3D"">
</div></body></html>=

--Apple-Mail=_580862F2-5CF1-49EF-8216-D2A3C4037DCE--