
              Apache Log4j 2.1 RELEASE NOTES

The Apache Log4j 2 team is pleased to announce the Log4j 2.1 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 of the improvements available in Logback while fixing some inherent problems in Logback's
architecture.

This is the fourth GA release which contains several bugfixes and new features. There are two
new Maven artifacts in this release: log4j-jul and log4j-iostreams. Both components are API-based
with optional Core features.

GA Release 2.1

Changes in this version include:

New features:
o LOG4J2-868:  Add ShutdownCallbackRegistry interface for customizable shutdown callback handling. This is particularly
        useful for application servers that wish to integrate with Log4j 2. 
o LOG4J2-589:  Supported filtering on custom log levels in configuration. 
o LOG4J2-856:  Documentation: add sections on the JUL Adapter, IO Streams and NoSQL Appenders to the Maven and Ivy page. 
o LOG4J2-848:  Add a Java lookup to provide nicely formatted runtime version information. 
o LOG4J2-809:  Move reflection utility class to API's private utility classes. 
o LOG4J2-833:  Documentation: added Runtime Dependencies link to left nav-bar on site. 
o LOG4J2-816:  Documentation: added section on XInclude to user manual Configuration page. 
o LOG4J2-547:  Add the Log4j IOStreams component. 
o LOG4J2-431:  Added Memory-Mapped File Appender. Thanks to Claude Mamo. 
o LOG4J2-827:  Support use of TypeConverter classes through the standard Plugin system. 
o LOG4J2-825:  Add simple validation constraint annotations for the Plugin system. 
o LOG4J2-428:  Implement a GELF layout. Thanks to Mark Paluch. 
o LOG4J2-608:  Add java.util.logging implementation based on log4j-api. See log4j-jul documentation for more details. 
o LOG4J2-793:  Add support for custom SLF4J Markers in log4j-slf4j-impl module. 
o LOG4J2-771:  Add lookup for application main arguments. 
o LOG4J2-787:  Add lookup for JVM arguments. 

Fixed Bugs:
o LOG4J2-676:  Some typo fixes and enhancements for the site. Thanks to Stefan Bodewig. 
o LOG4J2-866:  Documentation: fixed missing closing parenthesis in code example. Thanks to Gerard Weatherby. 
o LOG4J2-862:  Fixed classloader issue that prevented Log4j from finding the implementation when used in a custom Ant task. Thanks to Michael Sutherland. 
o LOG4J2-861:  Documentation: fix broken links on left navigation Extending Log4j Configuration sub-menu. 
o LOG4J2-797:  Documentation: clarified why log4j-core is a compile time dependency in Maven and Ivy page. Thanks to Andreas Rytina. 
o LOG4J2-855:  Documentation: fix broken links on Appenders manual page. 
o LOG4J2-807:  Prevent NPE when configuration with AsyncLogger/AsyncRoot is reloaded. 
o LOG4J2-678:  Documentation: fixed minor issues with Log4j2 web site/documentation. Thanks to Matt Sicker. 
o LOG4J2-843:  Migrate JpaHyperSqlAppenderTest JUnit performance test to log4j-perf. 
o LOG4J2-842:  Migrate JpaH2AppenderTest JUnit performance test to log4j-perf. 
o LOG4J2-841:  Migrate JdbcHyperSqlAppenderTest JUnit performance test to log4j-perf. 
o LOG4J2-840:  Migrate JdbcH2AppenderTest JUnit performance test to log4j-perf. 
o LOG4J2-830:  Respect external interrupt signal to allow application shutdown after joining AsyncAppender thread. 
o LOG4J2-813:  MarkerManager Log4jMarker.hasParents() returns opposite of correct result. Thanks to David Erichsen, Brandon Barry. 
o LOG4J2-785:  Documentation: fixed capitalization inconsistency in user manual example config. 
o LOG4J2-829:  Fixed issue in RollingFile filePattern: backslashes are path separators, not escape characters. 
o LOG4J2-832:  ThrowableProxy fails if a class in logged stack trace throws java.lang.Error from initializer Thanks to Seth Leger. 
o LOG4J2-745:  Avoid ConverterKey plugin clashes by using a more predictable plugin loading infrastructure.
        Plugins have been segmented into three parts: class path, user-specified packages, and OSGi bundles. Thanks to Scott Harrington. 
o LOG4J2-798:  Fixed plugin scanning redundancy causing massive slowdowns in certain environments. Thanks to Scott Harrington. 
o LOG4J2-753:  Reduced CachedClock thread contention. 
o LOG4J2-819:  Fixed memory leak in Tomcat 6 caused by clock background threads unintentionally
        started by Tomcat after web application stop. Thanks to Gary Gregory. 
o LOG4J2-391:  FlumePersistentManager now handles LockConflictExceptions in Berkeley Db when sending a batch. Thanks to Kamal Bahadur. 
o LOG4J2-782:  Remove invalid Oracle Maven repository. 
o LOG4J2-796:  Fixed issue where log4j-to-slf4j did not work correctly with SLF4J Simple Logger. 
o LOG4J2-811:  SimpleLogger throws ArrayIndexOutOfBoundsException for an empty array. Thanks to Yogesh Rao. 
o LOG4J2-663:  Fix OSGi Import-Package problem with the JMS API. Thanks to Florian Brunner. 
o LOG4J2-783:  PatternLayout should use platform character encoding by default, not UTF-8. Thanks to Minglei Lee. 

Changes:
o LOG4J2-845:  Add 2.1.0 to compatible versions in Log4j API ProviderUtil and update Log4jAPIVersion to 2.1.0 in
        core META-INF/log4j-provider.properties. 
o LOG4J2-844:  Update JMH to 1.1 from 0.7.2. 
o LOG4J2-831:  Documentation: updated FAQ "which jars" diagrams for JUL bridge and 2.1 version. 
o LOG4J2-780:  Update Spring Framework to 3.2.11.RELEASE from 3.2.8.RELEASE. 
o LOG4J2-815:  Unify the two JMS appenders into a single appender. Configurations written for 2.0 will still work in 2.1+. 
o LOG4J2-790:  Update Jackson to 2.4.2 from 2.4.1 (for XML and JSON processing). 
o LOG4J2-766:  Incomplete documentation for JSONLayout. Thanks to Bruno P. Kinoshita. 
o LOG4J2-800:  All life cycle implementations should be serializable.
        This is still work in progress. 
o LOG4J2-801:  org.apache.logging.log4j.core.Logger should be serializable.
        This is still work in progress. 
o LOG4J2-810:  Update javax.mail to 1.5.2 from 1.5.0. 
o LOG4J2-822:  Update org.eclipse.persistence.jpa to 2.5.2 from 2.5.1. 
o LOG4J2-867:  FlumeAppender: maxDelay not in seconds, but milliseconds.
        Add time scale to some settings, for example maxDelayMillis instead of maxDelay.
        The old names are aliased for compatibility. 


Apache Log4j 2.1 requires a minimum of Java 6 to build and run. 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:

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

-------------------------------------------------------------------------------

              Apache Log4j 2.0.2 RELEASE NOTES

The Apache Log4j 2 team is pleased to announce the Log4j 2.0.2 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 of the improvements available in Logback while fixing some inherent problems in Logback's
architecture.

This is the third GA release which contains several bugfixes from the previous release.

Bug fixes and enhancements

Changes in this version include:


Fixed Bugs:
o LOG4J2-773:  Site: log4j-core component pages were still using the old logo.
o LOG4J2-760:  Documentation improvement: link to dependency tree from log4j-core component page,
        link to log4j-core component page from FAQ page.
o LOG4J2-679:  Resolved race condition that caused log file rotation to fail with error: "Unable to create directory ..."
o LOG4J2-726:  Prevent application from hanging when PatternLayout configuration has opening '{' but no closing '}'.
o LOG4J2-769:  Startup takes a long time if you have empty packages attribute. Thanks to Scott Harrington.
o LOG4J2-763:  Improved asynchronous loggers and appenders to ensure the formatted message does not change even if
        parameters are modified by the application. (ParameterizedMessage was already safe.)
        Improved documentation. Thanks to Stephen Connolly.
o LOG4J2-729:  Emit warning message to console if no configuration file found.
o LOG4J2-765:  Improve warning message when missing log4j-core in the classpath.
o LOG4J2-722:  Clarified in documentation that Commons Logging jar is required when using log4j-jcl.
o LOG4J2-723:  Clarified in documentation that SLF4J API jar is required when using log4j-slf4j-impl.
o LOG4J2-759:  Fixed various minor site/documentation issues, mostly versioning related.
o LOG4J2-756:  Prevent JUnit test from creating unnecessary Log4j2Plugins.dat during build. Thanks to Scott Harrington.

Changes:
o LOG4J2-775:  Update Apache Flume to 1.5.0.1 from 1.5.0.
o LOG4J2-730:  Allow Log4jContextFactory subclasses to specify a custom ContextSelector.


Apache Log4j 2.0.2 requires a minimum of Java 6 to build and run. 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:

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

-------------------------------------------------------------------------------

              Apache Log4j 2.0.1 RELEASE NOTES

The Apache Log4j 2 team is pleased to announce the Log4j 2.0.1 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 of the improvements available in Logback while fixing some inherent problems in Logback's
architecture.

This is the first GA release, after thirteen prior releases over the last 4 years.

?

Changes in this version include:

New features:
o LOG4J2-725:  Added WebLoggerContextUtils class to log4j-web for helper methods useful for asynchronous servlets.
o LOG4J2-710:  Added documentation for Custom Levels and Custom Loggers.

Fixed Bugs:
o LOG4J2-744:  Avoid unnecessary Clock calls when TimestampMessage is logged. Thanks to Scott Harrington.
o LOG4J2-704:  Improved error message if configuration file not found.
o LOG4J2-750:  Webapp configuration page has incorrect class name. Thanks to Mike Calmus.
o LOG4J2-749:  Retain the default date pattern after fixing the ISO8601 pattern. Thanks to Scott Harrington.
o LOG4J2-670:  DatePatternConverter ISO8601_PATTERN now conforms to ISO8601.
o LOG4J2-741:  Reinstate the package configuration attribute for discovering custom plugins.
o LOG4J2-742:  XInclude not working with relative path. Thanks to Pascal Chollet.
o LOG4J2-740:  Fixed typo in webapp manual regarding sample web.xml file. Thanks to Kosta Krauth.
o LOG4J2-738:  RollingFileManager deadlock if async action thread fails to start. Thanks to Timothy Stack.
o LOG4J2-736:  Fixed log4j-bom so that it won't specify a default scope on any third party dependencies.
o LOG4J2-735:  Fixed log4j-bom so that it won't interfere with spring-bom and others.
o LOG4J2-731:  Updated documentation regarding extensions to LoggerContextFactory and Log4j 2 providers.
o LOG4J2-373:  Fixed ClassLoader issues in loading Log4j providers in an OSGi environment.
o LOG4J2-719:  Correctly handle NetworkOnMainThreadException thrown on Android during Log4j2 initialization.
o LOG4J2-716:  Automatically disable log4j JMX when detecting we are running on Android.
o LOG4J2-657:  Fixed AbstractDatabaseManager to close connection on writeInternal error. Thanks to Stefan Wehner.
o LOG4J2-713:  Android: java.lang.VerifyError: org/apache/logging/log4j/core/util/Closer Thanks to Nelson Melina.
o LOG4J2-703:  Android: Could not find class 'javax.naming.InitialContext', referenced from method org.apache.logging.log4j.core.lookup.JndiLookup.lookup. Thanks to Nelson Melina.



Apache Log4j 2.0.1 requires a minimum of Java 6 to build and run. 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:

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

-------------------------------------------------------------------------------

              Apache Log4j 2.0 RELEASE NOTES

The Apache Log4j 2 team is pleased to announce the Log4j 2.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 of the improvements available in Logback while fixing some inherent problems in Logback's
architecture.

This is the first GA release, after thirteen prior releases over the last 4 years.

GA Release

Changes in this version include:

New features:
o LOG4J2-519:  Added support for generating custom logger wrappers that replace the existing log levels
        and extended logger wrappers that add custom log levels to the existing ones.
o LOG4J2-696:  RegexFilter does not match multiline log messages.

Fixed Bugs:
o LOG4J2-705:  Fixed issue where Async Logger does not log thread context stack data.
        API change: added method getImmutableStackOrNull() to ThreadContext.ContextStack interface.
o LOG4J2-631:  Update docs to clarify how to use formatter logger and standard logger together.
o LOG4J2-441:  LoggerConfigs with no Level now inherit the Level from their parent.
o LOG4J2-703:  Android: Could not find class 'javax.naming.InitialContext', referenced from method org.apache.logging.log4j.core.lookup.JndiLookup.lookup. Thanks to Nelson Melina.
o LOG4J2-699:  PatternLayout manual page missing documentation on header/footer.
o LOG4J2-625:  Fixed Serialization error with SocketAppender and Async Loggers.
        (Fixed in RC2, but wasn't included in release notes.)
o LOG4J2-538:  JMX GUI: fixed occasional ArrayIndexOutOfBoundsException after pressing "reconfigure with XML below".
        (Fixed in RC2, but wasn't included in release notes.)
o LOG4J2-666:  AsyncLoggerContextSelector should ensure that different AsyncLoggerContext objects created by web app classloaders have unique names.
o LOG4J2-683:  Fix annotation processor warnings on JDK 1.7+. Thanks to Jurriaan Mous.
o LOG4J2-694:  Fix strange compilation error that popped up in a test class.
o LOG4J2-692:  Update documentation to specify only Maven 3 is supported.
o LOG4J2-690:  Log4j Web test dependencies should be in scope "test" in the pom. Thanks to Philip Helger.
o LOG4J2-682:  Special characters (tab and so on) in PatternLayout do not work. Thanks to Scott Harrington.
o LOG4J2-686:  Core's OptionConverter support for \b is broken (affects PatternLayout).
o LOG4J2-687:  Rename org.apache.logging.log4j.core.util.Closer.closeSilent() to closeSilently().
o LOG4J2-688:  Make org.apache.logging.log4j.core.layout.PatternLayout immutable.
o LOG4J2-707:  Some exceptions are not logged when configuration problems are detected.

Changes:
o LOG4J2-685:  Make org.apache.logging.log4j.core.layout.AbstractLayout immutable.
o LOG4J2-689:  Update Jackson to 2.4.1.
o LOG4J2-709:  Update Apache Commons Logging to 1.2 from 1.1.3.


Apache Log4j 2.0 requires a minimum of Java 6 to build and run. 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:

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






