2.0-rc2

Release date

2014-06-21

Added

  • Add support for configuration via YAML. (LOG4J2-427)

  • Create an appender to route log events to the ServletContext log. (LOG4J2-42)

  • Add EncodingPatternConverter to escape newlines and HTML special characters. (LOG4J2-439)

  • Add org.apache.logging.log4j.Logger.getLevel(). (LOG4J2-576)

  • Introduce Java annotation processor as the new plugin pre-caching mechanism. This is available in log4j-core. All custom plugins created before this should be re-built against the current log4j-core. (LOG4J2-595)

  • Add support for types other than String for plugin factory values/attributes. (LOG4J2-598)

  • Document the system properties used in Log4J 2. (LOG4J2-629)

  • Implement a SecureSocketAppender and secure server (SSL/TLS). (LOG4J2-644)

  • Add support for default plugin values and attributes. (LOG4J2-652)

  • Add log4j-perf module to provide a home for all log4j performance tests. Add support for JMH microbenchmark performance tests. (LOG4J2-654)

  • Add Vagrantfile for testing in GNU+Linux. (LOG4J2-655)

  • Made RollingFileAppender buffer size configurable. (LOG4J2-674)

  • RollingFile and RollingRandomAccessFile now write the layout footer before rollover. (LOG4J2-675)

Changed

  • Refactor Log4jLogEvent to lazily create ThrowableProxy. (LOG4J2-250)

  • SLf4JLogger is now Serializable. (LOG4J2-410)

  • Support default value for missing key in look-ups with fallback to looking in the properties map. (LOG4J2-419)

  • Add support to add a LoggerConfig. Document two ways to modify the configuration. (LOG4J2-468)

  • Allow header and footer to be specified as lookup patterns in PatternLayout. (LOG4J2-496)

  • Have Logger API expose a PrintWriter instead of custom LoggerStream. (LOG4J2-547)

  • Allow configuration files to be located as Servlet Context resources. (LOG4J2-554)

  • Introduce ExtendedLogger interface to facilitate implementing and extending Loggers. (LOG4J2-555)

  • Allow spaces around commas in Configuration’s package attribute. (LOG4J2-561)

  • Made RollingRandomAccessFileAppender buffer size configurable. (LOG4J2-566)

  • Make Blocking the default WaitStrategy for Async Loggers. (LOG4J2-574)

  • Rename org.apache.logging.log4j.core.net.SocketServer to TCPSocketServer and refactor with UDP. (LOG4J2-582)

  • Add support for multiple parents to Markers. (LOG4J2-585)

  • Update Jackson to 2.3.2 from 2.2.2. (LOG4J2-592)

  • Update Jackson to 2.3.3. (LOG4J2-616)

  • Update SLF4J to 1.7.7. (LOG4J2-617)

  • Use Clock to generate all log event timestamps, not just for Async Loggers. (LOG4J2-628)

  • Override commons-logging dependency version in tests. (LOG4J2-641)

  • Merge the TLS Syslog appender into the Syslog appender. (LOG4J2-646)

  • Upgrade to Flume 1.5.0. (LOG4J2-647)

Fixed

  • Improved documentation regarding log4j status logger. (LOG4J2-141)

  • The log4j-1.2-api module didn’t export any packages to OSGi. (LOG4J2-345)

  • Cyclic dependency with log4j-slf4j-impl in OSGi. (LOG4J2-346)

  • Add DateLookup and ThreadContextLookup to default lookups. (LOG4J2-378)

  • Resolved a problem with the previous solution for LOG4J2-392 that resulted in dropped events when using AsyncLoggerConfig with slow appenders when application is stopped. (LOG4J2-392)

  • During shutdown, a NullPointerException could be thrown due to the NullConfiguration class no longer being available to the ClassLoader. (LOG4J2-440)

  • A StringIndexOutOfBounds exception could occur during property substitution. (LOG4J2-448)

  • FailoverAppender was not resetting its status after the primary appender recovered. (LOG4J2-469)

  • Add equals and hashcode to Log4jLogEvent. (LOG4J2-499)

  • Resolved issue where AsyncAppender dropped events if queue still contained events when application is stopped. (LOG4J2-520)

  • Reset rollover time when size rollover is triggered. (LOG4J2-535)

  • Fixed issue with "Reconfigure using XML below" function in JMX Client GUI. ConfigurationSource is now a top-level class and can be obtained with Configuration.getConfigurationSource(). LoggerContext.getConfiguration().getConfigurationSource() provides a reliable public method for obtaining a logger context’s configuration location and content. (LOG4J2-539)

  • Make Throwable transient in ThrowableProxy. (LOG4J2-542)

  • SyslogAppenderTest and RFC5424LayoutTest were failing in Java 8. (LOG4J2-560)

  • FlumeAvroManager now always uses a client type of default_failover. (LOG4J2-563)

  • Renamed SLF4J logger class to Log4jLogger. (LOG4J2-564)

  • Fix shutdown thread memory leak in servlet containers. (LOG4J2-570)

  • Rework Level comparison APIs. (LOG4J2-579)

  • RollingRandomAccessFile now writes the layout header after rollover. (LOG4J2-581)

  • StatusLogger was not skipping multiple instances of the FQCN class, causing messages from classes in the Verbose list to be printed. (LOG4J2-597)

  • Unit tests are now less verbose during the build process. (LOG4J2-602)

  • Password data from the NoSQL plugins no longer shows up in cleartext in debug logging. (LOG4J2-605)

  • The OSGi version of log4j-web imports Servlet 2.5 at minimum instead of 3.0. (LOG4J2-613)

  • Invalid XML configuration files do not prevent the config file from being checked again. (LOG4J2-619)

  • Perform reconfiguration in a separate thread to prevent deadlocks. (LOG4J2-620)

  • RollingFileManager now correctly honours the bufferedIO configuration after rollover. (LOG4J2-622)

  • Generate MDC properties as a JSON map in JSONLayout. (LOG4J2-623)

  • JMX: Updating a Logger’s level via jConsole now correctly takes effect. (LOG4J2-637)

  • Prevent NPE in AsyncLogger and AsyncLoggerConfig if logger is used after log4j has been shut down. (LOG4J2-639)

  • Fix NPE that can be caused by a null ThreadContextClassLoader. (LOG4J2-640)

  • Log4j 2 throws ArrayIndexOutOfBoundsException. (LOG4J2-651)

  • Moved plugin cache file to META-INF for OSGi compatibility. (LOG4J2-664)

  • Correctly process log events when combining AsyncLoggers with AsyncAppender. (LOG4J2-668)

  • Prevent NPE when combining AsyncLoggers with AsyncLoggerConfigs. (LOG4J2-669)