I tried to organize the long list of changes into something more digestible: https://garygregory.wordpress.com/2016/10/05/apache-log4j-2-7-is-out/
Gary On Wed, Oct 5, 2016 at 8:48 PM, Ralph Goers <ralph.go...@dslextreme.com> wrote: > Here is my +1 > > Ralph > > On Oct 2, 2016, at 1:11 PM, Ralph Goers <ralph.go...@dslextreme.com> > wrote: > > This is a vote to release Log4j 2.7, the next version of the Log4j 2 > project. > > Please download, test, and cast your votes on the log4j developers list. > [] +1, release the artifacts > [] -1, don't release because... > > The vote will remain open for 72 hours (or more if required). All > votes are welcome and we encourage everyone to test the release, but only > Logging PMC votes are “officially” counted. As always, at least 3 +1 votes > and more positive than negative votes are required. > > Changes in this version include: > > New features: > o LOG4J2-1578: RoutingAppender can be configured with scripts. Add Script in > a Routes element. > o LOG4J2-1597: Add a ScriptAppenderSelector to create an Appender specified > by a Script. > o LOG4J2-1349: (GC) Added support for garbage-free ThreadContext map. > Disabled by default, users need to enable this explicitly. > o LOG4J2-1447: (GC) Changed LogEvent's internal data structure for context > data to be garbage-free. Added method LogEvent#getContextData(), deprecated > method #getContextMap(). > o LOG4J2-1010: Users can now inject context data from other sources than > ThreadContext. Values can be any Object, not just Strings. Thanks to Mikael > Ståldal. > o LOG4J2-1568: Added support for java.util.concurrent.LinkedTransferQueue to > AsyncAppender. > o LOG4J2-1430: Added optional support for Conversant DisruptorBlockingQueue > in AsyncAppender. Thanks to John Cairns. > o LOG4J2-1439: Added optional support for JCTools MPSC bounded lock-free > queue in AsyncAppender. Thanks to Anthony Maire. > o LOG4J2-1558: SocketAppender now supports IO buffering. > o LOG4J2-1557: Add a Builder for the SocketAppender (deprecates factory > method). > o LOG4J2-1609: Add a Builder to ServletAppender and deprecate factory method. > o LOG4J2-1553: AbstractManager now implements AutoCloseable. > o LOG4J2-1528: Added ability to generate Log4j 2-style XML configuration > file from ConfigurationBuilder. > o LOG4J2-1181: Added Logging API for Scala 2.10 and 2.11. > o LOG4J2-1512: Added options to exclude stack trace from JSON, XML and YAML > layouts. > o LOG4J2-1539: Added Core API Configurator.shutdown(LoggerContext, long, > TimeUnit). > o LOG4J2-1501: FileAppender is now able to create files on-demand. > o LOG4J2-1504: RollingFileAppender is now able to create files on-demand. > o LOG4J2-1471: [PatternLayout] Add an ANSI option to %xThrowable. > o LOG4J2-1472: org.apache.logging.log4j.core.LoggerContext now implements > Closeable. > o LOG4J2-1458: [PatternLayout] Add an ANSI option to %message. > o LOG4J2-1505: Create a Builder for the FileAppender plugin to facilitate > adding attributes in the future. > o LOG4J2-1507: Allow Builders to be completely generic. > o LOG4J2-1508: Allow a Builder to subclass another Builder. > o LOG4J2-1516: Add ThreadContextMap2 interface supporting method > putAll(Map<String, String>). Thanks to Gary Gregory. > o LOG4J2-1519: Add ThreadContext.putAll(Map<String, String>). > o LOG4J2-1520: Add JUnit Rule implementations to manage the thread context. > o LOG4J2-1547: The Core AbstractConfiguration now tracks its LoggerContext > and add Configuration.getLoggerContext(). > o LOG4J2-1540: The Core AbstractManager now tracks its LoggerContext. > o LOG4J2-1577: Add a Builder to the RoutingAppender and deprecate factory > method. > > Fixed Bugs: > o LOG4J2-1618: Fixed ClassCastException when using JUL logging during > shutdown. Thanks to Raman Gupta. > o LOG4J2-1620: 2.7-rc1: RollingFileAppender immediateFlush default value > should be true, not false. Thanks to Sascha Scholz. > o LOG4J2-1611: Improved performance of context data injector for web > applications to be on par with standalone applications. > o LOG4J2-1591: Introduced new interface LifeCycle2 with stop(long,TimeUnit) > method to avoid breaking backwards compatibility with new > Configurator.shutdown(LoggerContext, long, TimeUnit) API. > o LOG4J2-1590: Fixed issue with filters extending AbstractFilter that did > not override methods with unrolled varargs. > o LOG4J2-1583: Fixed scrambled log messages triggered by nested logging from > toString() method of a logging parameter object. Thanks to Larry West. > o LOG4J2-1259: Log4j threads are no longer leaking on Tomcat shutdown. > Thanks to Misagh Moayyed, Steffen Offermann. > o LOG4J2-1051: When starting on Google App Engine, Interpolator now > suppresses the NoClassDefFoundError stack trace for the jvmrunargs lookup. > Thanks to Lukasz Lenart. > o LOG4J2-1582: When initializing on platforms where JMX is not available, > Interpolator component no longer prints stack trace for warning messages. > o LOG4J2-1581: Unregistering JMX components no longer prints a stack trace > when the MBean has already been unregistered. > o LOG4J2-1313: Support Property values to be specified in configuration as a > value attribute as well as an element. Thanks to Philipp Knobel, Leon Finker. > o LOG4J2-1575: (GC) LoggerConfig now stores configuration properties in a > List, not a Map to prevent creating temporary Iterator objects. Added method > LoggerConfig#getPropertyList(), deprecated method #getProperties(). > o LOG4J2-1457: Fixed class loader deadlock when using async logging and > extended stack trace pattern. Thanks to Leon Finker. > o LOG4J2-1563: Fix to prevent Log4j 2.6.2 and higher from losing exceptions > when a security manager is present. Thanks to Jason Tedor. > o LOG4J2-1530: Fixed issue where LogEvent.getContextStack() returned null. > o LOG4J2-1518: Prevent deadlock in Async Loggers when queue is full and > logged Object's toString() logs another message. Thanks to Leon Finker. > o LOG4J2-1542: Prevent ArrayIndexOutOfBoundsException in > ParameterizedMessage.formatTo for single-char or empty messages. Thanks to > Rogério Lecarião Leite. > o LOG4J2-1549: Fixed issue where > AsyncLoggerContextSelector+PropertiesConfigurationBuilder defaulted to > includeLocation=true. Thanks to Jason Bedard. > o LOG4J2-1562: Prevent SocketAppender memory usage from growing unbounded if > it cannot connect to a server. > o LOG4J2-1559: Prevent NPE in Level.isInRange. Thanks to Andrey Plotkin. > o LOG4J2-1511: DynamicThresholdFilter filtered incorrectly when params were > passed as individual arguments instead of varargs. Thanks to Srikanth > Surukuntu. > o LOG4J2-1548: [CronTriggeringPolicy] ConfigurationScheduler scheduled the > task infinitely after first fire. > o LOG4J2-1506: Log4j should not unregister JMX MBeans when > log4j2.disable.jmx property is true. Thanks to Johannes Schleger. > o LOG4J2-1490: Log4j2 should postpone creating log file until the appender > actually receives an event. Thanks to Krzysztof Taborski. > o LOG4J2-1320: Support loading custom plugins from jar files and directories > whose classpath entries use the "vfs" URL protocol. Thanks to Paresh Varke, > Pierrick Hymbert. > o LOG4J2-1541: Fix file handle resource leak in > XmlConfiguration.XmlConfiguration(ConfigurationSource). > o LOG4J2-1538: Prevent NPE when dynamically removing filters. Thanks to Igor > Karpov. > o LOG4J2-1532: Attributes were not merged properly in composite > configurations. > o LOG4J2-1529: Attributes were not merged properly in composite > configurations. Thanks to Sridevi Narra. > o LOG4J2-1527: Prevent NPE in RingBufferLogEvent.getFormattedMessage() when > used in web applications. Thanks to Jose Leon. > o LOG4J2-905: Added ability to disable (date) lookup completely for > compatibility with other libraries like Camel. Thanks to Moritz Löser. > o LOG4J2-1526: Added support for setting StatusLogger destination in > ConfigurationBuilder. > o LOG4J2-1448: Allow comma separated agents, host list to be passed to > FlumeAppender. Thanks to Keith Laban. > o LOG4J2-1500: Merging configurations failed with an NPE when comparing > Nodes with different attributes. Thanks to Jose Leon. > o LOG4J2-1482: Fixed improper header in CsvParameterLayout. Thanks to Sumit > Singhal. > o LOG4J2-1199: Documented that JVM Input Arguments Lookup (JMX) is not > available on Google App Engine. > o LOG4J2-1438: (GC) Added method getParameter() to ObjectMessage (and > ReusableObjectMessage). > o LOG4J2-1488: (GC) Fixed ISO8601 %date conversion pattern with a period '.' > separator for milliseconds is now garbage free. Thanks to Richard Zschech. > o LOG4J2-1489: (GC) Fixed %date conversion patterns with a timezone > parameter are now garbage free. Thanks to Richard Zschech. > o LOG4J2-1279: Prevent NullPointerException in > FastDateParser$TimeZoneStrategy. Thanks to Tony Baines. > o LOG4J2-1341: (GC) HighlightConverter and StyleConverter are now GC-free. > Thanks to Richard Zschech. > o LOG4J2-1467: [OSGi] Fixed missing import package. Thanks to Ralf, Gary > Gregory. > o LOG4J2-351: [OSGi] Fixed wrong Fragment-Host in manifest files. Thanks to > Roland Weiglhofer. > o LOG4J2-1313: Properties declared in configuration can now have their value > either in the element body or in an attribute named "value". Thanks to > Philipp Knobel. > o LOG4J2-1235: > org.apache.logging.log4j.core.appender.routing.IdlePurgePolicy was not > working correctly. Thanks to Niranjan Rao, Sascha Scholz, Aleksey Zvolinsky. > o LOG4J2-1502: Fixed issue where CsvParameterLayout and CsvLogEventLayout > inserted NUL characters if data starts with {, (, [ or " Thanks to Sumit > Singhal. > o LOG4J2-1573: Layout is no longer optional. Thanks to Steffen Offermann. > o LOG4J2-1608: ServletAppender does not provide throwable object to > ServletContext. > o LOG4J2-1599: Prevent potential NPE in > org.apache.logging.log4j.message.ParameterFormatter.formatMessage3(StringBuilder, > char[], int, Object[], int, int[]). > o LOG4J2-1600: Prevent potential NPE due to > org.apache.logging.log4j.core.layout.MarkerPatternSelector.createSelector(PatternMatch[], > String, boolean, boolean, Configuration). > o LOG4J2-1601: Prevent potential NPE due to > org.apache.logging.log4j.core.layout.ScriptPatternSelector.createSelector(AbstractScript, > PatternMatch[], String, boolean, boolean, Configuration). > o LOG4J2-1602: Prevent potential NPE in > org.apache.logging.log4j.core.util.datetime.FormatCache.MultipartKey.equals(Object) > when object is null. > o LOG4J2-1603: Redo hashCode() and equals() methods in > org.apache.logging.log4j.core.net.ssl classes. > o LOG4J2-1610: Add targetNamespace to log4j-config.xsd. GitHub #43. Thanks > to Shubhankar. > o LOG4J2-1619: new Log4jLogEvent().toString() throws an NPE. > > Changes: > o LOG4J2-1604: Log4j2 TcpSocketServer in background. Thanks to Colin Hillman. > o LOG4J2-1574: Allow the RollingFileAppender to use default pattern layout. > o LOG4J2-1556: Custom Log4j threads now extend Log4jThread. > o LOG4J2-1605: Improve error messages for TcpSocketServer and > UdpSocketServer. > o LOG4J2-1458: Updated Jackson from 2.7.5 to 2.8.0. > o LOG4J2-1494: Updated Jackson from 2.8.0 to 2.8.1. > o LOG4J2-1569: Updated Jackson from 2.8.1 to 2.8.2. > o LOG4J2-1598: Updated Jackson from 2.8.2 to 2.8.3. > o LOG4J2-1495: Updated LMAX Disruptor from 3.3.4 to 3.3.5. > o LOG4J2-1496: Updated Kafka client from 0.9.1.0 to 0.10.0.0. > o LOG4J2-1533: Updated Kafka client from 0.10.0.0 to 0.10.0.1. > o LOG4J2-1487: Updated JMS test from ActiveMQ 5.13.3 to 5.13.4. > o LOG4J2-1551: Updated JMS test from ActiveMQ 5.13.4 to 5.14.0. > o LOG4J2-1543: Removed deprecated Core API > org.apache.logging.log4j.core.util.Constants.UTF_8. > o LOG4J2-1544: Removed deprecated Core API > org.apache.logging.log4j.core.util.Assert.requireNonNull(T, String). > o LOG4J2-1545: Removed deprecated Web API > org.apache.logging.log4j.web.WebLookup.getServletContext(). > > Tag: > > > a) for a new copy do "git clone > https://git-wip-us.apache.org/repos/asf/logging-log4j2.git" and then "git > checkout tags/log4j-2.7-rc2” > b) for an existing working copy to “git pull” and then “git checkout > tags/log4j-2.7-rc2” > > Web Site: > <http://rgoers.github.io/log4j2-site/index.html>http://rgoers.github.io/log4j2-site/index.html > > Artifacts: > https://repository.apache.org/content/repositories/orgapachelogging-1022 > > You may download all the artifacts by executing: > > wget -e robots=off --cut-dirs=7 -nH -r -p -np --no-check-certificate > https://repository.apache.org/content/repositories/orgapachelogging-1022/org/apache/logging/log4j/ > > Ralph > > > -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org Java Persistence with Hibernate, Second Edition <http://www.manning.com/bauer3/> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> Spring Batch in Action <http://www.manning.com/templier/> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory