Apache Log4j 2.9.1 has been released. Log4j is an open source project for Apache. By using Log4j, the destination of log information can be controlled by the console, file, GUI component, or even socket server, NT event logger, UNIX Syslog Daemon. You can also control the output format of each log; by defining the level of each log information, you can more carefully control the log generation process. Most interesting is that these can be configured flexibly through a configuration file without having to modify the application code.
Note that from Log4j 2.9.0, the Log4j API has been tuned to use the java.util.ServiceLoader to locate the Log4j implementation. In addition, for security reasons, SerializedLayout has been deprecated.
- LOG4J2-1988: Prevent ConcurrentModificationException with AsyncLoggerConfig.
- LOG4J2-1914: Prevent ConcurrentModificationException with AsyncLoggerConfig.
- LOG4J2-2048: Increase default queue size for AsyncAppender from 128 to 1024.
- LOG4J2-2035: Fix documentation to clarify disruptor-3.3.4 is now required for async loggers (previously the docs referred to disruptor-3.3.3 which was never released)
- LOG4J2-2030: Inspect all known ClassLoaders to locate the service provider.
- LOG4J2-2028: Java 9 StackLocator was not properly skipping the initial stack frames. Thanks to Jason Tedor.
- LOG4J2-2026:java.lang.AbstractMethodError:javax.xml.parsers.DocumentBuilderFactory.setFeature(). Thanks to Leon Finker.
- LOG4J2-2029: Marker examples should not use deprecated flow APIs. Thanks to Fabrizio Cucci.
- LOG4J2-1936: ClassNotFoundException when making all loggers asynchronous under OSGi environment. Thanks to Helber Belmiro.