2.0-rc2 (2014-06-21)

Changes

Added

  • Add support for configuration via YAML. (for LOG4J2-427 by Ralph Goers, Alexander Reelsen)

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

  • Add EncodingPatternConverter to escape newlines and HTML special characters. (for LOG4J2-439 by Ralph Goers, Bruce Brouwer)

  • Add org.apache.logging.log4j.Logger.getLevel(). (for LOG4J2-576 by Gary Gregory)

  • 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. (for LOG4J2-595 by Matt Sicker)

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

  • Document the system properties used in Log4J 2. (for LOG4J2-629 by Remko Popma)

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

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

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

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

  • Made RollingFileAppender buffer size configurable. (for LOG4J2-674 by Remko Popma)

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

Changed

  • Refactor Log4jLogEvent to lazily create ThrowableProxy. (for LOG4J2-250 by Remko Popma)

  • SLf4JLogger is now Serializable. (for LOG4J2-410 by Ralph Goers, Ivlin Zeng)

  • Support default value for missing key in look-ups with fallback to looking in the properties map. (for LOG4J2-419 by Ralph Goers, Woonsan Ko)

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

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

  • Have Logger API expose a PrintWriter instead of custom LoggerStream. (for LOG4J2-547 by Ralph Goers, Bruce Brouwer)

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

  • Introduce ExtendedLogger interface to facilitate implementing and extending Loggers. (for LOG4J2-555 by Remko Popma, Bruce Brouwer)

  • Allow spaces around commas in Configuration’s package attribute. (for LOG4J2-561 by Gary Gregory, vibin)

  • Made RollingRandomAccessFileAppender buffer size configurable. (for LOG4J2-566 by Remko Popma, Luigi Alice)

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

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

  • Add support for multiple parents to Markers. (for LOG4J2-585 by Ralph Goers, Bruce Brouwer)

  • Update Jackson to 2.3.2 from 2.2.2. (for LOG4J2-592 by Gary Gregory)

  • Update Jackson to 2.3.3. (for LOG4J2-616 by Matt Sicker)

  • Update SLF4J to 1.7.7. (for LOG4J2-617 by Matt Sicker)

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

  • Override commons-logging dependency version in tests. (for LOG4J2-641 by Matt Sicker)

  • Merge the TLS Syslog appender into the Syslog appender. (for LOG4J2-646 by Gary Gregory)

  • Upgrade to Flume 1.5.0. (for LOG4J2-647 by Gary Gregory)

Fixed

  • Improved documentation regarding log4j status logger. (for LOG4J2-141 by Remko Popma, Joern Huxhorn)

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

  • Cyclic dependency with log4j-slf4j-impl in OSGi. (for LOG4J2-346 by Matt Sicker)

  • Add DateLookup and ThreadContextLookup to default lookups. (for LOG4J2-378 by Ralph Goers)

  • 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. (for LOG4J2-392 by Remko Popma, Andre Bogus)

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

  • A StringIndexOutOfBounds exception could occur during property substitution. (for LOG4J2-448 by Ralph Goers, X86core)

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

  • Add equals and hashcode to Log4jLogEvent. (for LOG4J2-499 by Ralph Goers)

  • Resolved issue where AsyncAppender dropped events if queue still contained events when application is stopped. (for LOG4J2-520 by Remko Popma, JavaTech, Andre Bogus)

  • Reset rollover time when size rollover is triggered. (for LOG4J2-535 by Ralph Goers)

  • 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. (for LOG4J2-539 by Remko Popma, Colin Froggatt)

  • Make Throwable transient in ThrowableProxy. (for LOG4J2-542 by Ralph Goers)

  • SyslogAppenderTest and RFC5424LayoutTest were failing in Java 8. (for LOG4J2-560 by Ralph Goers)

  • FlumeAvroManager now always uses a client type of default_failover. (for LOG4J2-563 by Ralph Goers, Michael Friedmann)

  • Renamed SLF4J logger class to Log4jLogger. (for LOG4J2-564 by Matt Sicker)

  • Fix shutdown thread memory leak in servlet containers. (for LOG4J2-570 by Matt Sicker)

  • Rework Level comparison APIs. (for LOG4J2-579 by Gary Gregory)

  • RollingRandomAccessFile now writes the layout header after rollover. (for LOG4J2-581 by Remko Popma, Alexander Khokhlov)

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

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

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

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

  • Invalid XML configuration files do not prevent the config file from being checked again. (for LOG4J2-619 by Ralph Goers, Scott Harrington)

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

  • RollingFileManager now correctly honours the bufferedIO configuration after rollover. (for LOG4J2-622 by Remko Popma, Farooq Khan)

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

  • JMX: Updating a Logger’s level via jConsole now correctly takes effect. (for LOG4J2-637 by Remko Popma, Mansoor Sajjad, Jon Wilmoth)

  • Prevent NPE in AsyncLogger and AsyncLoggerConfig if logger is used after log4j has been shut down. (for LOG4J2-639 by Remko Popma, Mck SembWever)

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

  • Log4j 2 throws ArrayIndexOutOfBoundsException. (for LOG4J2-651 by Gary Gregory)

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

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

  • Prevent NPE when combining AsyncLoggers with AsyncLoggerConfigs. (for LOG4J2-669 by Remko Popma)