Blogged:  https://blogs.apache.org/logging/entry/log4j-2-11-released

Please share on social media!


On Sat, Mar 17, 2018 at 9:49 AM, Ralph Goers <ralph.go...@dslextreme.com>
wrote:

> The Apache Log4j 2 team is pleased to announce the Log4j 2.11.0 release!
>
> Apache Log4j is a well known framework for logging application behavior.
> Log4j 2 is an upgrade to Log4j that provides significant improvements over
> its predecessor, Log4j 1.x, and provides many other modern features such as
> support for Markers, lambda expressions for lazy logging, property
> substitution using Lookups, multiple patterns on a PatternLayout and
> asynchronous Loggers. Another notable Log4j 2 feature is the ability to be
> "garbage-free" (avoid allocating temporary objects) while logging. In
> addition, Log4j 2 will not lose events while reconfiguring.
>
> This release contains new features, bugfixes and minor enhancements.
>
> As of Log4j 2.9.0, the Log4j API was modified to use
> java.util.ServiceLoader to locate Log4j implementations, although the
> former binding mechanism is still supported. The Log4j API jar is now a
> multi-release jar to provide implementations of Java 9 specific classes.
> Multi-release jars are not supported by the OSGi specification so OSGi
> modules will not be able to take advantage of these implementations but
> will not lose functionality as they will fall back to the implementations
> used in Java 7 and 8. More details on the new features and fixes are
> itemized below. Note that some tools are not compatible with multi-release
> jars and may fail trying to process class files in the META-INF/versions/9
> folder. Those errors should be reported to the tool vendor.
>
> Note that subsequent to the 2.9.0 release, for security reasons,
> SerializedLayout is deprecated and no longer used as default in the Socket
> and JMS appenders. SerializedLayout can still be used as before, but has to
> be specified explicitly. To retain old behaviour, you have to change
> configuration like:
>
> <Appenders>
>   <Socket name="socket" host="localhost" port="9500"/>
> </Appenders>
> into:
>
> <Appenders>
>   <Socket name="socket" host="localhost" port="9500">
>     <SerializedLayout/>
>   </Socket>
> </Appenders>
> We do, however, discourage the use of SerializedLayout and recommend
> JsonLayout as a replacement:
>
> <Appenders>
>   <Socket name="socket" host="localhost" port="9500">
>     <JsonLayout properties="true"/>
>   </Socket>
> </Appenders>
> Note that the XML, JSON and YAML formats changed in the 2.11.0 release:
> they no longer have the "timeMillis" attribute and instead have an
> "Instant" element with "epochSecond" and "nanoOfSecond" attributes.
>
> Note that subsequent to the 2.9.0 release, for security reasons, Log4j
> does not process DTD in XML files. If you used DTD for including snippets,
> you have to use XInclude or Composite Configuration instead.
>
> The Log4j 2.11.0 API, as well as many core components, maintains binary
> compatibility with previous releases with the following exceptions to Log4j
> Core. Log4j 2.11.0 moves code from log4j-core to several new Maven modules.
> Dependencies to other jars that used to be optional in log4j-core are now
> required in the new modules. The code in these modules have been
> repackaged. These changes do not affect your configuration files.
>
> The new modules are:
>
> log4j-jdbc-dbc2
>     • Group ID: org.apache.logging.log4j
>     • Artifact ID: log4j-jdbc-dbc2
>     • Old package: org.apache.logging.log4j.core.appender.db.jdbc
>     • New package: org.apache.logging.log4j.jdbc.appender
>
> log4j-jpa
>     • Group ID: org.apache.logging.log4j
>     • Artifact ID: log4j-jpa
>     • Old package 1: org.apache.logging.log4j.core.appender.db.jpa
>     • New package 1: org.apache.logging.log4j.jpa.appender
>     • Old package 2: org.apache.logging.log4j.core.
> appender.db.jpa.converter
>     • New package 2: org.apache.logging.log4j.jpa.converter
>
> log4j-mongodb2
>     • Group ID: org.apache.logging.log4j
>     • Artifact ID: log4j-mongodb2
>     • Old package: org.apache.logging.log4j.mongodb
>     • New package: org.apache.logging.log4j.mongodb2
>
> log4j-mongodb3
>     • Group ID: org.apache.logging.log4j
>     • Artifact ID: log4j-mongodb3
>     • Old package: org.apache.logging.log4j.mongodb
>     • New package: org.apache.logging.log4j.mongodb3
>
> GA Release 2.11.0
>
> Changes in this version include:
>
> New Features
> LOG4J2-2253: Add API to enable iterating over message parameters without
> creating temporary objects. Thanks to Carter Kozak.
> LOG4J2-1883: Added support for precise (micro and nanosecond) timestamps
> when running on Java 9. A limited number of precise %d date formats are
> supported with PatternLayout. POTENTIAL BREAKING CHANGE: The XML, JSON and
> YAML formats have changed: they no longer have the "timeMillis" attribute
> and instead have an "Instant" element with "epochSecond" and "nanoOfSecond"
> attributes. Thanks to Anthony Maire.
> LOG4J2-2190: Output JSON object for ObjectMessage in JsonLayout. Thanks to
> Franz Wong.
> LOG4J2-2191: Made log4j-core a multi-release ("multi-version") jar, added
> log4j-core-java9 module.
> LOG4J2-2143: Add missing converters to PatternLayout.
> LOG4J2-2160: Add API org.apache.logging.log4j.core.lookup.Interpolator.
> getStrLookupMap().
> LOG4J2-2179: The MongoDB Appender should use a keys and values for a Log4j
> MapMessage.
> LOG4J2-2180: Add a MongoDbProvider builder for and deprecate
> org.apache.logging.log4j.mongodb.MongoDbProvider.createNoSqlProvider().
> LOG4J2-2181: The JDBC Appender should use keys and values from a Log4j
> MapMessage.
> LOG4J2-2185: Add a simple JDBC DriverManager-based ConnectionSource that
> uses JDBC's DriverManager#getConnection(String, String, String).
> LOG4J2-2186: Add a JDBC ConnectionSource that provides pooling through
> Apache Commons DBCP 2.
> LOG4J2-2187: Add a hook for a Connection Source for a JDBC Appender to
> release its resources.
> LOG4J2-2203: Add org.apache.logging.log4j.core.util.WatchManager#unwatch(
> File).
> LOG4J2-2206: Add method 
> org.apache.logging.log4j.core.util.WatchManager.reset(File)
> and reset().
> LOG4J2-2208: Add debug logging to org.apache.logging.log4j.
> mongodb.MongoDbConnection.
> Fixed Bugs
> LOG4J2-2271: Move module-info.class to META-INF/versions/9 directory.
> LOG4J2-2254: Incorrect automatics module name header was being included in
> manifests.
> LOG4J2-2247: NullPointerException would occur when header was provided to
> a Layout on RollingRandingAccessFileAppender with
> DirectWriteRolloverStrategy.
> LOG4J2-2129: Log4j2 throws NoClassDefFoundError in Java 9 in
> java.util.ServiceLoader. Thanks to Blazej Bucko.
> LOG4J2-2158: Fixed bug where ThreadContext map was cleared, resulting in
> entries being only available for one log event. Thanks to Björn Kautler.
> LOG4J2-2002: Avoid null attribute values in DefaultConfigurationBuilder.
> Thanks to Paul Burrowes.
> LOG4J2-2175: Fix typo in Property Substitution docs. Thanks to Behrang
> Saeedzadeh.
> LOG4J2-2163: Allow SortedArrayStringMap to be filtered upon
> deserialization. Fix build error in Java 9 when compiling log4j-core test
> classes.
> LOG4J2-2157: Don't create exit message in traceExit(R) when logging is
> disabled. Thanks to Malte Skoruppa.
> LOG4J2-2123: DefaultMergeStrategy did not merge filters on loggers
> correctly. Thanks to Jacob Tolar.
> LOG4J2-2126: Removed compile-time dependency on Java Management APIs from
> Log4J API module to improve compatibility with Android Platform which does
> not support JMX extensions. Thanks to Oleg Kalnichevski.
> LOG4J2-2270: Strings::join, when called with [null] returns "null" instead
> of EMPTY. Thanks to Cyril Martin.
> LOG4J2-2276: ConcurrentModificationException from
> org.apache.logging.log4j.status.StatusLogger.<clinit>(StatusLogger.java:71).
> Thanks to Sean Baxter.
> LOG4J2-2274: Allow EnvironmentPropertySource to run with a SecurityManager
> that rejects environment variable access. Thanks to Sebastien Lannez.
> LOG4J2-2279: Allow SystemPropertiesPropertySource to run with a
> SecurityManager that rejects system property access. Thanks to Gary Gregory.
> Changes
> LOG4J2-2273: Documentation fix in manual page for custom configurations.
> Thanks to Bruno P. Kinoshita.
> LOG4J2-2252: Reusable LogEvents now pass the original format string to
> downstream components like layouts and filters. Thanks to Carter Kozak.
> LOG4J2-2250: The internal status logger timestamp format is now
> configurable with system property log4j2.StatusLogger.DateFormat.
> LOG4J2-2236: Removed unnecessary dependency on jcommander since Log4j uses
> embedded picocli since 2.9.
> LOG4J2-2146: Update version of maven bundle plugin to 3.4.0. Convert
> bundle plugin error to a warning.
> LOG4J2-2215: Reduce compiler warnings in log4j-api.
> LOG4J2-2127: Removed unnecessary threadlocal StringBuilder field from
> MdcPatternConverter. Thanks to Carter Kozak.
> LOG4J2-2194: Require Java 9 to compile the log4j-perf module to allow
> benchmarking with Java 9 APIs.
> LOG4J2-2193: Update JMH to version 1.19 from 1.1.1.
> LOG4J2-2132: Update ZeroMQ's jeromq from 0.4.2 to 0.4.3.
> LOG4J2-2165: Update Jackson from 2.9.2 to 2.9.3.
> LOG4J2-2184: Update MongoDB driver from 3.0.4 to 3.6.1.
> LOG4J2-2197: Document default property value support. Thanks to Fabrice
> Daugan.
> LOG4J2-2198: Update MongoDB dependencies from classic to modern.
> LOG4J2-2204: org.apache.logging.log4j.core.util.WatchManager.getWatchers()
> should pre-allocate its new Map.
> LOG4J2-2209: Rename existing MongoDb plugin and related artifacts from
> MongoDb to MongoDb2.
> LOG4J2-2210: Fix error log message for Script which says ScriptFile
> instead. Thanks to Björn Kautler.
> LOG4J2-2212: Unnecessary contention in CopyOnWriteSortedArrayThreadContextMap.
> Thanks to Daniel Feist, Gary Gregory.
> LOG4J2-2213: Unnecessary contention in GarbageFreeSortedArrayThreadContextMap.
> Thanks to Daniel Feist, Gary Gregory.
> LOG4J2-2214: Unnecessary contention in DefaultThreadContextMap. Thanks to
> Daniel Feist, Gary Gregory.
> LOG4J2-2182: NullPointerException at org.apache.logging.log4j.util.
> Activator.loadProvider(Activator.java:81) in log4j 2.10.0. Thanks to
> liwenxian2017, Gary Gregory.
> LOG4J2-2202: MarkerFilter onMismatch invalid attribute in .properties.
> Thanks to Kilian, Gary Gregory.
> LOG4J2-2219: Configuration builder classes should look for "onMismatch",
> not "onMisMatch". Thanks to Kilian, Gary Gregory.
> LOG4J2-2205: New module log4j-mongodb3: Remove use of deprecated MongoDB
> APIs and code to the Java driver version 3 API. Thanks to Gary Gregory.
> LOG4J2-2188: Split off JPA support into a new module log4j-jpa. Thanks to
> Gary Gregory.
> LOG4J2-2229: Update Jackson from 2.9.3 to 2.9.4. Thanks to Gary Gregory.
> LOG4J2-2243: Cannot see or copy all of certain JAnsi exception messages on
> Windows due to NUL characters. Thanks to Gary Gregory.
> LOG4J2-2245: Update Apache Commons Compress from 1.15 to 1.16.1. Thanks to
> Gary Gregory.
> LOG4J2-2259: Update MongoDB 3 module from driver 3.6.1 to 3.6.3.
> LOG4J2-2260: [SMTP] Update javax.mail from 1.6.0 to 1.6.1.
> LOG4J2-2264: Update JAnsi from 1.16 to 1.17.
>
> Apache Log4j 2.11.0 requires a minimum of Java 7 to build and run. Log4j
> 2.3 was the last release that supported Java 6.
>
> Basic compatibility with Log4j 1.x is provided through the log4j-1.2-api
> component, however it does not implement some of the very implementation
> specific classes and methods. The package names and Maven groupId have been
> changed to org.apache.logging.log4j to avoid any conflicts with log4j 1.x.
>
> For complete information on Apache Log4j 2, including instructions on how
> to submit bug reports, patches, or suggestions for improvement, see the
> Apache Apache Log4j 2 website:
>
> https://logging.apache.org/log4j/2.x/
>
>
>

Reply via email to