Apache Log4j 2.1 发布,此版本是第四个 GA 版本,包括一些 bug 修复和新特性。此版本有两个新的 Maven artifacts: log4j-jul 和 log4j-iostreams。两个组件都是基于 API 可选 Core 特性。
改进记录
新特性:
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.
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.
改进:
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 要求至少要支持 Java 6,基础兼容 Log4j 1.x,提供 Log4j01.2-API 组件,包名和 Maven GroupID 修改为 org.apache.logging.log4j,避免跟 log4j 1.x 冲突。
Apache Log4j 2 更多内容请看: http://logging.apache.org/log4j/2.x/