A few more details about Apache Log4j 2.7
Apache Log4j 2.7 is now out on a href="https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.apache.logging.log4j%22">Maven Central. Here’s are the highlights.
What's new since 2.6.2
- The RoutingAppender can be configured with scripts.
- A new Appender, the ScriptAppenderSelector can create another Appender as specified by a Script.
- Users can now inject context data from other sources than ThreadContext. Values can be any Object, not just Strings.
- The SocketAppender now supports IO buffering.
- Added the ability to generate Log4j 2 XML configuration file from a ConfigurationBuilder.
- Hello Scala! We've added Logging APIs for Scala 2.10 and 2.11.
- Added options to exclude stack trace from JSON, XML and YAML layouts.
- Added Core API Configurator.shutdown(LoggerContext, long, TimeUnit).
- FileAppender and RollingFileAppender can create files on-demand.
- PatternLayout added a color ANSI option to %message and %xThrowable.
- org.apache.logging.log4j.core.LoggerContext now implements Closeable.
- Add ThreadContextMap2 interface supporting method putAll(Map
). - Add JUnit Rule implementations to manage the thread context.
- The Core AbstractConfiguration and AbstractManager now track its LoggerContext; add Configuration.getLoggerContext().
Continuing the Asynchronous Epic
- We've added support for java.util.concurrent.LinkedTransferQueue to the AsyncAppender.
- Added optional support for the Conversant DisruptorBlockingQueue in AsyncAppender.
- Added optional support for JCTools MPSC bounded lock-free queue in AsyncAppender.
Continuing the GC-free Epic
- Continuing the GC-free epic, we've added support for garbage-free ThreadContext map. This is disabled by default, and users need to enable this explicitly.
- Also in GC-free-land, we changed LogEvent's internal data structure for context data to be garbage-free. We added the method LogEvent#getContextData() and deprecated getContextMap().
Continuing the Builder Epic
- Added Builders for the ConsoleAppender, FileAppender, RoutingAppender, SocketAppender, and ServletAppender (and deprecated factory methods).
- Builders can be generic.
- A Builder can subclass another Builder.
And bug fixes as well, for which you can just see the Log4j site.
Happy Log4j Logging!
Gary Gregory