[ANN] Log4j 2.8 released

Matt Sicker <[email protected]> Fri, 27 Jan 2017 10:18:05 -0600
Newsgroups gmane.comp.apache.logging
Message-ID <CACmp6krTUDS8sjeEn1xCuxZOr9_e_gYTeQ-T4t0nrXAp1mXX4A__28968.5874515728$1485533900$gmane$org@mail.gmail.com>
--001a114699508ce3bc054715cfc5
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

The Apache Log4j 2 team is pleased to announce the Log4j 2.8 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 several bugfixes and new features. The new
features include the ability
to have the RollingFileAppender log directly to the archive files.
More details on the new features and
fixes are itemized below.

Note that subsequent to the 2.6 release a minor source incompatibility
was found due to the
addition of new methods to the Logger interface. If you have code that does=
:

logger.error(null, =E2=80=9CThis is the log message=E2=80=9D, throwable);

or similar with any log level you will get a compiler error saying the
reference is ambiguous.
To correct this either do:

logger.error(=E2=80=9CThis is the log message=E2=80=9D, throwable);

or

logger.error((Marker) null, =E2=80=9CThis is the log message=E2=80=9D, thro=
wable);

The Log4j 2.8 API, as well as many core components, maintains binary
compatibility with previous releases.

GA Release 2.8

Changes in this version include:

New features:
o LOG4J2-1032:  Make DefaultRolloverStrategy more efficent when
renaming files. Add nomax option to the fileIndex attribute.
o LOG4J2-1101:  RollingFileAppender now supports omitting the file
name and writing directly to the archive files.
o LOG4J2-1243:  Allow default value in property to be a Lookup.
o LOG4J2-1787:  Document how to exclude transitive conflicting
dependencies in Maven and Gradle.
o LOG4J2-1773:  Add StatusLoggerRule to allow unit tests to set a status le=
vel.
o LOG4J2-424:  Add non-string data type support to JdbcAppender via
new ColumnMapping plugin.
o LOG4J2-1771:  Add a Builder to ColumnConfig and deprecate
ColumnConfig.createColumnConfig().
o LOG4J2-1770:  Add a Builder to JdbcAppender and deprecate
JdbcAppender.createAppender().
o LOG4J2-1764:  Use MethodHandle in ContextDataFactory cached constructor.
o LOG4J2-1730:  Add Apache Cassandra appender and ColumnMapping plugin.
o LOG4J2-1759:  Add TypeConverter for java.util.UUID.
o LOG4J2-1758:  Add TypeConverter for java.nio.file.Path.
o LOG4J2-1755:  Add TypeConverter and constraint validators for
java.net.InetAddress and port numbers.
o LOG4J2-969:  Refactor SyslogAppender so that Layout is a Plugin element.
o LOG4J2-1660:  Added public method
ThreadContext::getThreadContextMap; removed class ThreadContextAccess.
o LOG4J2-1379:  Add documentation regarding YAML configuration format.
o LOG4J2-1718:  Introduce marker interface AsynchronouslyFormattable.
o LOG4J2-1681:  Introduce interfaces IndexedStringMap and
IndexedReadOnlyStringMap, supporting garbage-free iteration over
sorted map.
o LOG4J2-1695:  Add a Builder to ScriptPatternSelector and deprecate
ScriptPatternSelector.createSelector().
o LOG4J2-1696:  Add a Builder to MarkerPatternSelector and deprecate
MarkerPatternSelector.createSelector().
o LOG4J2-1697:  Add a SerializerBuilder to PatternLayout and deprecate
PatternLayout.createSerializer().
o LOG4J2-1701:  Add a Builder to RandomAccessFileAppender and
deprecate RandomAccessFileAppender.createAppender().
o LOG4J2-1703:  Add a Builder to MemoryMappedFileAppender and
deprecate MemoryMappedFileAppender.createAppender().
o LOG4J2-1704:  Add a Builder to RollingRandomAccessFileAppender and
deprecate RollingRandomAccessFileAppender.createAppender().
o LOG4J2-1709:  Add a Builder to SyslogAppender and deprecate
SyslogAppender.createAppender().
o LOG4J2-1707:  Allow TCP Socket Appender to set socket options.
o LOG4J2-1708:  Allow Secure Socket Appender to set socket options.
o LOG4J2-1737:  Add a Builder to SyslogLayout and deprecate
SyslogLayout.createLayout(Facility, boolean, String, Charset).
o LOG4J2-1738:  Add a Builder to JsonLayout and deprecate
org.apache.logging.log4j.core.layout.JsonLayout.createLayout(Configuration,
boolean, boolean, boolean, boolean, boolean, boolean, String, String,
Charset, boolean).
o LOG4J2-1739:  Add Builder to KafkaAppender and deprecate
KafkaAppender.createAppender(Layout, Filter, String, boolean, String,
Property[], Configuration).
o LOG4J2-1733:  Add SyncSend attribute to KafkaAppender (as in
KafkaLog4jAppender). Thanks to Vincent Tieleman.

Fixed Bugs:
o LOG4J2-1780:  Eliminate the use of the ExecutorServices in the LoggerCont=
ext.
o LOG4J2-1786:  ConfigurationScheduler now preserves interrupt flag
during stop.
o LOG4J2-1779:  Fixed bug where AsyncLogger did not resolve
configuration properties.
o LOG4J2-1769:  Fixed concurrency issue affecting all layouts except
PatternLayout and GelfLayout, which caused scrambled output and
exceptions when logging synchronously from multiple threads. Thanks to
Brandon Goodin.
o LOG4J2-1724:  Using variables in GelfLayout's additional fields at
runtime. Thanks to Alexander Krasnostavsky.
o LOG4J2-1762:  Add Builder to GelfLayout.
o LOG4J2-1649:  Insure the ConfigurationScheduler shuts down without
blocking. Thanks to Georg Friedrich.
o LOG4J2-1653:  CronTriggeringPolicy would use the wrong date/time
when rolling over and create multiple triggering policies on
reconfiguration. Thanks to Georg Friedrich.
o LOG4J2-1748:  Do not use non-daemon thread pool for rollover tasks.
o LOG4J2-1628:  Fixed file locking regression in FileAppender
introduced in 2.6.
o LOG4J2-1744:  The custom logger Generate tool no longer requires the
log4j-api module on the classpath.
o LOG4J2-1731:  SslSocketManager now respects connectTimeoutMillis.
Thanks to Chris Ribble.
o LOG4J2-1682:  Logger using LocalizedMessageFactory prints key
instead of message. Thanks to Markus Waidhofer.
o LOG4J2-1720:  Make GelfLayout independent of Jackson.
o LOG4J2-1719:  Fixed race condition in ObjectMessage and
SimpleMessage, ensuring that the log message contains the value the
object has during the logging call.
o LOG4J2-1688:  Fixed bug where elements of a log message parameter
array were nulled out in garbage-free mode.
o LOG4J2-1692:  Add putAll() method to CloseableThreadContext. Thanks
to Greg Thomas.
o LOG4J2-1689:  Add CleanableThreadContextMap interface supporting
method removeAll(Iterable<String>).
o LOG4J2-1685:  Option 'disableAnsi' in PatternLayout to
unconditionally disable ANSI escape codes. Thanks to Raman Gupta.
o LOG4J2-1706:  Make TimeFilter usable as global filter and as logger filte=
r.
o LOG4J2-1722:  (GC) Avoid allocating temporary objects in
VariablesNotEmptyReplacementConverter.
o LOG4J2-1717:  (GC) Avoid allocating temporary objects in
EncodingPatternConverter.
o LOG4J2-1716:  (GC) Avoid allocating temporary objects in
MapPatternConverter. (Note that constructing a MapMessage is not
garbage-free.)
o LOG4J2-1683:  (GC) Avoid allocating temporary objects in MapMessage.
o LOG4J2-1715:  (GC) Avoid allocating temporary objects in
NdcPatternConverter. (Note that use of the ThreadContext stack is not
garbage-free.)
o LOG4J2-1714:  (GC) Avoid allocating temporary objects in
AbstractStyleNameConverter.
o LOG4J2-1680:  (GC) Avoid allocating temporary objects in TimeFilter.
o LOG4J2-1679:  (GC) Avoid allocating temporary objects in
StructuredDataFilter.
o LOG4J2-1678:  (GC) Avoid allocating temporary objects in
ThreadContextMapFilter.
o LOG4J2-1677:  (GC) Avoid allocating temporary objects in MapFilter.
o LOG4J2-1674:  (GC) Avoid allocating temporary objects in ThresholdFilter.
o LOG4J2-1673:  (GC) Avoid allocating temporary objects in MarkerFilter.
o LOG4J2-1672:  (GC) Avoid allocating temporary objects in LevelRangeFilter=
.
o LOG4J2-1671:  (GC) Avoid allocating temporary objects in
EqualsIgnoreCaseReplacementConverter.
o LOG4J2-1670:  (GC) Avoid allocating temporary objects in
EqualsReplacementConverter.
o LOG4J2-1669:  (GC) Avoid allocating temporary objects in MaxLengthConvert=
er.
o LOG4J2-1668:  (GC) Avoid allocating temporary objects in
MarkerPatternConverter.
o LOG4J2-1667:  (GC) Avoid allocating temporary objects in
SequenceNumberPatternConverter.
o LOG4J2-1666:  (GC) Avoid allocating temporary objects in
RelativeTimePatternConverter.
o LOG4J2-1665:  (GC) Avoid allocating temporary objects in
IntegerPatternConverter.
o LOG4J2-1637:  Fixed problems when used in OSGi containers
(IllegalAccessError, NoClassDefFoundError).
o LOG4J2-1226:  Improve LogEvent serialization to handle
non-serializable Messages and deserializing when required classes are
missing.
o LOG4J2-1663:  Ensure SortedArrayStringMap can be serialized and
deserialized without errors regardless of content.
o LOG4J2-1658:  Prevent NPE in
ThreadContextMapFactory::createThreadContextMap when initializing
Log4j with Configurator::initialize and the BasicContextSelector is
used.
o LOG4J2-1645:  Immutable empty StringMap.
o LOG4J2-1623:  Configurable JVM shutdown hook timeout.
o LOG4J2-1712:  Pick up bug fixes from Apache Commons Lang's
org.apache.commons.lang3.time package.
o LOG4J2-1636:  Console Appender does not pick up Oracle Java 8's
sun.stdout.encoding and sun.stderr.encoding. Thanks to Eldar
Gabdullin.
o LOG4J2-1639:  Fix MemoryMappedFileAppender.createAppender() Javadoc
for immediateFlush. Thanks to Sridhar Gopinath.
o LOG4J2-1676:  Some LogEvents may not carry a Throwable (Use
Message.getThrowable() in log(Message) methods.) Thanks to Joern
Huxhorn.
o LOG4J2-1723:  Unwanted transitive dependency on
geronimo-jms_1.1_spec causes OSGi tests to fail. Thanks to Ludovic
HOCHET.
o LOG4J2-1664:  Improve OSGi unit tests. Thanks to Ludovic HOCHET.
o LOG4J2-1687:  NPE in ThrowableProxy when resolving stack in Java
EE/OSGi environment. Thanks to Robert Christiansen.
o LOG4J2-1642:  DefaultShutdownCallbackRegistry can throw a
NoClassDefFoundError. Thanks to Johno Crawford.
o LOG4J2-1474:  CronTriggeringPolicy raise exception and fail to
rollover log file when evaluateOnStartup is true. Thanks to yin
mingjun, Neon.
o LOG4J2-1734:  SslSocketManagerFactory might leak Sockets when
certain startup errors occur.
o LOG4J2-1736:  TcpSocketManagerFactory might leak Sockets when
certain startup errors occur.
o LOG4J2-1740:  Add CronTriggeringPolicy programmatically leads to NPE.
o LOG4J2-1743:  CompositeConfiguration does not add filters to
appenderRefs. Thanks to Toby Shepheard.
o LOG4J2-1756:  Adds xmlns in schema and some other tags. Thanks to
shubhankar1100.

Changes:
o LOG4J2-1781:  Update Conversant Disruptor from 1.2.7 to 1.2.10
o LOG4J2-1774:  Replace MockEJB dependency in unit tests with Spring
Test and Mockito.
o LOG4J2-1644:  Inefficient locking in AbstractLoggerAdapter. Thanks
to Tim Gokcen, Pavel Sivolobtchik.
o LOG4J2-1641:  Update JeroMQ from 0.3.5 to 0.3.6.
o LOG4J2-1647:  Update Commons Lang from 3.4 to 3.5.
o LOG4J2-1646:  Migrate to Mockito 2.x in unit tests.
o LOG4J2-1655:  Update Jackson from 2.8.3 to 2.8.4.
o LOG4J2-1735:  Update Jackson from 2.8.4 to 2.8.5.
o LOG4J2-1656:  Update Apache Flume from 1.6.0 to 1.7.0.
o LOG4J2-1698:  Update LMAX Disruptor from 3.3.5 to 3.3.6.
o LOG4J2-1700:  Update Jansi from 1.13 to 1.14.
o LOG4J2-1750:  Update Kafka from 0.10.0.1 to 0.10.1.1.
o LOG4J2-1751:  Update liquibase-core from 3.5.1 to 3.5.3.
o LOG4J2-1302:  The log4j-slf4j-impl module now declares a runtime
dependency on log4j-core. While not technically required, this makes
the log4j-slf4j-impl module behave similarly to slf4j-log4j12, and
facilitates migration to Log4j 2.


Apache Log4j 2.8 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/


--=20
Matt Sicker <[email protected]>

--001a114699508ce3bc054715cfc5
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><pre style=3D"color:rgb(0,0,0);word-wrap:break-word;white-=
space:pre-wrap">The Apache Log4j 2 team is pleased to announce the Log4j 2.=
8 release!

Apache Log4j is a well known framework for logging application behavior. Lo=
g4j 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 a=
nd asynchronous
Loggers. Another notable Log4j 2 feature is the ability to be &quot;garbage=
-free&quot; (avoid allocating
temporary objects) while logging. In addition, Log4j 2 will not lose events=
 while reconfiguring.

This release contains several bugfixes and new features. The new features i=
nclude the ability
to have the RollingFileAppender log directly to the archive files. More det=
ails on the new features and
fixes are itemized below.

Note that subsequent to the 2.6 release a minor source incompatibility was =
found due to the
addition of new methods to the Logger interface. If you have code that does=
:

logger.error(null, =E2=80=9CThis is the log message=E2=80=9D, throwable);

or similar with any log level you will get a compiler error saying the refe=
rence is ambiguous.
To correct this either do:

logger.error(=E2=80=9CThis is the log message=E2=80=9D, throwable);

or

logger.error((Marker) null, =E2=80=9CThis is the log message=E2=80=9D, thro=
wable);

The Log4j 2.8 API, as well as many core components, maintains binary compat=
ibility with previous releases.

GA Release 2.8

Changes in this version include:

New features:
o LOG4J2-1032:  Make DefaultRolloverStrategy more efficent when renaming fi=
les. Add nomax option to the fileIndex attribute.=20
o LOG4J2-1101:  RollingFileAppender now supports omitting the file name and=
 writing directly to the archive files.=20
o LOG4J2-1243:  Allow default value in property to be a Lookup.=20
o LOG4J2-1787:  Document how to exclude transitive conflicting dependencies=
 in Maven and Gradle.=20
o LOG4J2-1773:  Add StatusLoggerRule to allow unit tests to set a status le=
vel.=20
o LOG4J2-424:  Add non-string data type support to JdbcAppender via new Col=
umnMapping plugin.=20
o LOG4J2-1771:  Add a Builder to ColumnConfig and deprecate ColumnConfig.cr=
eateColumnConfig().=20
o LOG4J2-1770:  Add a Builder to JdbcAppender and deprecate JdbcAppender.cr=
eateAppender().=20
o LOG4J2-1764:  Use MethodHandle in ContextDataFactory cached constructor.=
=20
o LOG4J2-1730:  Add Apache Cassandra appender and ColumnMapping plugin.=20
o LOG4J2-1759:  Add TypeConverter for java.util.UUID.=20
o LOG4J2-1758:  Add TypeConverter for java.nio.file.Path.=20
o LOG4J2-1755:  Add TypeConverter and constraint validators for java.net.In=
etAddress and port numbers.=20
o LOG4J2-969:  Refactor SyslogAppender so that Layout is a Plugin element.=
=20
o LOG4J2-1660:  Added public method ThreadContext::getThreadContextMap; rem=
oved class ThreadContextAccess.=20
o LOG4J2-1379:  Add documentation regarding YAML configuration format.=20
o LOG4J2-1718:  Introduce marker interface AsynchronouslyFormattable.=20
o LOG4J2-1681:  Introduce interfaces IndexedStringMap and IndexedReadOnlySt=
ringMap, supporting garbage-free iteration over sorted map.=20
o LOG4J2-1695:  Add a Builder to ScriptPatternSelector and deprecate Script=
PatternSelector.createSelector().=20
o LOG4J2-1696:  Add a Builder to MarkerPatternSelector and deprecate Marker=
PatternSelector.createSelector().=20
o LOG4J2-1697:  Add a SerializerBuilder to PatternLayout and deprecate Patt=
ernLayout.createSerializer().=20
o LOG4J2-1701:  Add a Builder to RandomAccessFileAppender and deprecate Ran=
domAccessFileAppender.createAppender().=20
o LOG4J2-1703:  Add a Builder to MemoryMappedFileAppender and deprecate Mem=
oryMappedFileAppender.createAppender().=20
o LOG4J2-1704:  Add a Builder to RollingRandomAccessFileAppender and deprec=
ate RollingRandomAccessFileAppender.createAppender().=20
o LOG4J2-1709:  Add a Builder to SyslogAppender and deprecate SyslogAppende=
r.createAppender().=20
o LOG4J2-1707:  Allow TCP Socket Appender to set socket options.=20
o LOG4J2-1708:  Allow Secure Socket Appender to set socket options.=20
o LOG4J2-1737:  Add a Builder to SyslogLayout and deprecate SyslogLayout.cr=
eateLayout(Facility, boolean, String, Charset).=20
o LOG4J2-1738:  Add a Builder to JsonLayout and deprecate org.apache.loggin=
g.log4j.core.layout.JsonLayout.createLayout(Configuration, boolean, boolean=
, boolean, boolean, boolean, boolean, String, String, Charset, boolean).=20
o LOG4J2-1739:  Add Builder to KafkaAppender and deprecate KafkaAppender.cr=
eateAppender(Layout, Filter, String, boolean, String, Property[], Configura=
tion).=20
o LOG4J2-1733:  Add SyncSend attribute to KafkaAppender (as in KafkaLog4jAp=
pender). Thanks to Vincent Tieleman.=20

Fixed Bugs:
o LOG4J2-1780:  Eliminate the use of the ExecutorServices in the LoggerCont=
ext.=20
o LOG4J2-1786:  ConfigurationScheduler now preserves interrupt flag during =
stop.=20
o LOG4J2-1779:  Fixed bug where AsyncLogger did not resolve configuration p=
roperties.=20
o LOG4J2-1769:  Fixed concurrency issue affecting all layouts except Patter=
nLayout and GelfLayout, which caused scrambled output and exceptions when l=
ogging synchronously from multiple threads. Thanks to Brandon Goodin.=20
o LOG4J2-1724:  Using variables in GelfLayout&#39;s additional fields at ru=
ntime. Thanks to Alexander Krasnostavsky.=20
o LOG4J2-1762:  Add Builder to GelfLayout.=20
o LOG4J2-1649:  Insure the ConfigurationScheduler shuts down without blocki=
ng. Thanks to Georg Friedrich.=20
o LOG4J2-1653:  CronTriggeringPolicy would use the wrong date/time when rol=
ling over and create multiple triggering policies on reconfiguration. Thank=
s to Georg Friedrich.=20
o LOG4J2-1748:  Do not use non-daemon thread pool for rollover tasks.=20
o LOG4J2-1628:  Fixed file locking regression in FileAppender introduced in=
 2.6.=20
o LOG4J2-1744:  The custom logger Generate tool no longer requires the log4=
j-api module on the classpath.=20
o LOG4J2-1731:  SslSocketManager now respects connectTimeoutMillis. Thanks =
to Chris Ribble.=20
o LOG4J2-1682:  Logger using LocalizedMessageFactory prints key instead of =
message. Thanks to Markus Waidhofer.=20
o LOG4J2-1720:  Make GelfLayout independent of Jackson.=20
o LOG4J2-1719:  Fixed race condition in ObjectMessage and SimpleMessage, en=
suring that the log message contains the value the object has during the lo=
gging call.=20
o LOG4J2-1688:  Fixed bug where elements of a log message parameter array w=
ere nulled out in garbage-free mode.=20
o LOG4J2-1692:  Add putAll() method to CloseableThreadContext. Thanks to Gr=
eg Thomas.=20
o LOG4J2-1689:  Add CleanableThreadContextMap interface supporting method r=
emoveAll(Iterable&lt;String&gt;).=20
o LOG4J2-1685:  Option &#39;disableAnsi&#39; in PatternLayout to unconditio=
nally disable ANSI escape codes. Thanks to Raman Gupta.=20
o LOG4J2-1706:  Make TimeFilter usable as global filter and as logger filte=
r.=20
o LOG4J2-1722:  (GC) Avoid allocating temporary objects in VariablesNotEmpt=
yReplacementConverter.=20
o LOG4J2-1717:  (GC) Avoid allocating temporary objects in EncodingPatternC=
onverter.=20
o LOG4J2-1716:  (GC) Avoid allocating temporary objects in MapPatternConver=
ter. (Note that constructing a MapMessage is not garbage-free.)=20
o LOG4J2-1683:  (GC) Avoid allocating temporary objects in MapMessage.=20
o LOG4J2-1715:  (GC) Avoid allocating temporary objects in NdcPatternConver=
ter. (Note that use of the ThreadContext stack is not garbage-free.)=20
o LOG4J2-1714:  (GC) Avoid allocating temporary objects in AbstractStyleNam=
eConverter.=20
o LOG4J2-1680:  (GC) Avoid allocating temporary objects in TimeFilter.=20
o LOG4J2-1679:  (GC) Avoid allocating temporary objects in StructuredDataFi=
lter.=20
o LOG4J2-1678:  (GC) Avoid allocating temporary objects in ThreadContextMap=
Filter.=20
o LOG4J2-1677:  (GC) Avoid allocating temporary objects in MapFilter.=20
o LOG4J2-1674:  (GC) Avoid allocating temporary objects in ThresholdFilter.=
=20
o LOG4J2-1673:  (GC) Avoid allocating temporary objects in MarkerFilter.=20
o LOG4J2-1672:  (GC) Avoid allocating temporary objects in LevelRangeFilter=
.=20
o LOG4J2-1671:  (GC) Avoid allocating temporary objects in EqualsIgnoreCase=
ReplacementConverter.=20
o LOG4J2-1670:  (GC) Avoid allocating temporary objects in EqualsReplacemen=
tConverter.=20
o LOG4J2-1669:  (GC) Avoid allocating temporary objects in MaxLengthConvert=
er.=20
o LOG4J2-1668:  (GC) Avoid allocating temporary objects in MarkerPatternCon=
verter.=20
o LOG4J2-1667:  (GC) Avoid allocating temporary objects in SequenceNumberPa=
tternConverter.=20
o LOG4J2-1666:  (GC) Avoid allocating temporary objects in RelativeTimePatt=
ernConverter.=20
o LOG4J2-1665:  (GC) Avoid allocating temporary objects in IntegerPatternCo=
nverter.=20
o LOG4J2-1637:  Fixed problems when used in OSGi containers (IllegalAccessE=
rror, NoClassDefFoundError).=20
o LOG4J2-1226:  Improve LogEvent serialization to handle non-serializable M=
essages and deserializing when required classes are missing.=20
o LOG4J2-1663:  Ensure SortedArrayStringMap can be serialized and deseriali=
zed without errors regardless of content.=20
o LOG4J2-1658:  Prevent NPE in ThreadContextMapFactory::createThreadContext=
Map when initializing Log4j with Configurator::initialize and the BasicCont=
extSelector is used.=20
o LOG4J2-1645:  Immutable empty StringMap.=20
o LOG4J2-1623:  Configurable JVM shutdown hook timeout.=20
o LOG4J2-1712:  Pick up bug fixes from Apache Commons Lang&#39;s org.apache=
.commons.lang3.time package.=20
o LOG4J2-1636:  Console Appender does not pick up Oracle Java 8&#39;s sun.s=
tdout.encoding and sun.stderr.encoding. Thanks to Eldar Gabdullin.=20
o LOG4J2-1639:  Fix MemoryMappedFileAppender.createAppender() Javadoc for i=
mmediateFlush. Thanks to Sridhar Gopinath.=20
o LOG4J2-1676:  Some LogEvents may not carry a Throwable (Use Message.getTh=
rowable() in log(Message) methods.) Thanks to Joern Huxhorn.=20
o LOG4J2-1723:  Unwanted transitive dependency on geronimo-jms_1.1_spec cau=
ses OSGi tests to fail. Thanks to Ludovic HOCHET.=20
o LOG4J2-1664:  Improve OSGi unit tests. Thanks to Ludovic HOCHET.=20
o LOG4J2-1687:  NPE in ThrowableProxy when resolving stack in Java EE/OSGi =
environment. Thanks to Robert Christiansen.=20
o LOG4J2-1642:  DefaultShutdownCallbackRegistry can throw a NoClassDefFound=
Error. Thanks to Johno Crawford.=20
o LOG4J2-1474:  CronTriggeringPolicy raise exception and fail to rollover l=
og file when evaluateOnStartup is true. Thanks to yin mingjun, Neon.=20
o LOG4J2-1734:  SslSocketManagerFactory might leak Sockets when certain sta=
rtup errors occur.=20
o LOG4J2-1736:  TcpSocketManagerFactory might leak Sockets when certain sta=
rtup errors occur.=20
o LOG4J2-1740:  Add CronTriggeringPolicy programmatically leads to NPE.=20
o LOG4J2-1743:  CompositeConfiguration does not add filters to appenderRefs=
. Thanks to Toby Shepheard.=20
o LOG4J2-1756:  Adds xmlns in schema and some other tags. Thanks to shubhan=
kar1100.=20

Changes:
o LOG4J2-1781:  Update Conversant Disruptor from 1.2.7 to 1.2.10=20
o LOG4J2-1774:  Replace MockEJB dependency in unit tests with Spring Test a=
nd Mockito.=20
o LOG4J2-1644:  Inefficient locking in AbstractLoggerAdapter. Thanks to Tim=
 Gokcen, Pavel Sivolobtchik.=20
o LOG4J2-1641:  Update JeroMQ from 0.3.5 to 0.3.6.=20
o LOG4J2-1647:  Update Commons Lang from 3.4 to 3.5.=20
o LOG4J2-1646:  Migrate to Mockito 2.x in unit tests.=20
o LOG4J2-1655:  Update Jackson from 2.8.3 to 2.8.4.=20
o LOG4J2-1735:  Update Jackson from 2.8.4 to 2.8.5.=20
o LOG4J2-1656:  Update Apache Flume from 1.6.0 to 1.7.0.=20
o LOG4J2-1698:  Update LMAX Disruptor from 3.3.5 to 3.3.6.=20
o LOG4J2-1700:  Update Jansi from 1.13 to 1.14.=20
o LOG4J2-1750:  Update Kafka from 0.10.0.1 to 0.10.1.1.=20
o LOG4J2-1751:  Update liquibase-core from 3.5.1 to 3.5.3.=20
o LOG4J2-1302:  The log4j-slf4j-impl module now declares a runtime dependen=
cy on log4j-core. While not technically required, this makes the log4j-slf4=
j-impl module behave similarly to slf4j-log4j12, and facilitates migration =
to Log4j 2.=20


Apache Log4j 2.8 requires a minimum of Java 7 to build and run. Log4j 2.3 w=
as the
last release that supported Java 6.

Basic compatibility with Log4j 1.x is provided through the log4j-1.2-api co=
mponent, however it
does not implement some of the very implementation specific classes and met=
hods. The package
names and Maven groupId have been changed to org.apache.logging.log4j to av=
oid any conflicts
with log4j 1.x.

For complete information on Apache Log4j 2, including instructions on how t=
o submit bug
reports, patches, or suggestions for improvement, see the Apache Apache Log=
4j 2 website:

<a href=3D"https://logging.apache.org/log4j/2.x/">https://logging.apache.or=
g/log4j/2.x/</a></pre><div><br></div>-- <br><div class=3D"gmail_signature">=
Matt Sicker &lt;<a href=3D"mailto:[email protected]" target=3D"_blank">board=
[email protected]</a>&gt;</div>
</div>

--001a114699508ce3bc054715cfc5--