---
layout: post
status: PUBLISHED
published: true
title: Log4j 2.14.0 Released
id: 31f10c37-b9c3-4289-8feb-56c47dc3b711
date: '2020-11-11 05:48:42 -0500'
categories: logging
tags: []
permalink: logging/entry/log4j-2-14-0-released
---
The Apache Log4j 2 team is pleased to announce the Log4j 2.14.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 a new Layout, JsonTemplateLayout, that is intended to ultimately replace JsonLayout. As its
name suggests it uses a template to define the elements to include in the JSON. This Layout was contributed by the
author of the log4j2-logstash-layout at GitHub, and who is now a member of the Log4j community.
Log4j 2.14.0 adds support for MongoDB 4 and removes support for MongoDB 2.
This release also contains a number of bug fixes which are listed below.
Due to a break in compatibility in the SLF4J binding, Log4j now ships with two versions of the SLF4J to Log4j adapters.
log4j-slf4j-impl should be used with SLF4J 1.7.x and earlier and log4j-slf4j18-impl should be used with SLF4J 1.8.x and
later.
The Log4j 2.14.0 API, as well as many core components, maintains binary compatibility with previous releases.
LOG4J2-2901:
Missing configuration files should be ignored when creating a composite configuration.
LOG4J2-2883:
When using DirectFileRolloverStrategy the file pattern was not being recalculated on
size based rollover after a time based rollover had occurred.
LOG4J2-2875:
Rollover was failing to create directories when using a DirectFileeRolloverStrategy.
LOG4J2-2859:
Fixed typos where mergeFactory should be mergeStrategy. Thanks to Yanming Zhou.
LOG4J2-2832:
Correct class name printed in error message in RollingFileAppender. Thanks to Benjamin Asbach.
LOG4J2-2882:
Support java.util.logging filters when using that API. Thanks to Emmanuel Bourg.
LOG4J2-2880:
Create StackWalker benchmark. Revert back to StackWalker.walk based on benchmark results.
LOG4J2-2877:
Determine the container id to obtain container and image information.
LOG4J2-2844:
Null pointer exception when no network interfaces are available.
LOG4J2-2895:
Fix potential deadlock in asynchronous logging by avoiding blocking for queue space on Log4jThreads
LOG4J2-2837:
Disruptor and JUL no longer recursively start the AsyncLoggerDisruptor
resulting in an extra disruptor background thread constantly waiting.
LOG4J2-2867:
RingBufferLogEventTranslator uses a static ContextDataInjector instead of initializing a new object
on each thread.
LOG4J2-2898:
Avoid initializing volatile fields with default values. Thanks to Turbanov Andrey.
LOG4J2-2899:
Fix log4j-1.2-api LogEventWrapper threadId and priority accessors when called multiple times.
LOG4J2-2939:
Fix NPE in MDCContextMap on 'contains' and 'isEmpty' invocations. Thanks to Constantin Hirsch.
LOG4J2-2954:
Prevent premature garbage collection of shutdown hooks in DefaultShutdownCallbackRegistry. Thanks to Henry Tung.
Changes
LOG4J2-2889:
Add date pattern support for HTML layout. Thanks to Geng Yuanzhe.
LOG4J2-2892:
Allow GelfLayout to produce newline delimited events. Thanks to Jakub Lukes.
:
Update MongoDB tests to require Java 8 unconditionally now that Log4j requires Java 8.
Apache Log4j 2.14.0 requires a minimum of Java 8 to build and run. Log4j 2.12.1 is the last release to support
Java 7.
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: