blob: 9f447284ac296ba042211e6e73219f7c0b130594 [file] [log] [blame]
<!DOCTYPE html>
<!--
| Generated by Apache Maven Doxia Site Renderer 1.11.1 from target/generated-sources/site/asciidoc/_release-notes/_2.21.0.adoc at 2024-03-06
| Rendered using Apache Maven Fluido Skin 1.11.2
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="generator" content="Apache Maven Doxia Site Renderer 1.11.1" />
<title>Log4j &#x2013; </title>
<link rel="stylesheet" href="../css/apache-maven-fluido-1.11.2.min.css" />
<link rel="stylesheet" href="../css/site.css" />
<link rel="stylesheet" href="../css/print.css" media="print" />
<script src="../js/apache-maven-fluido-1.11.2.min.js"></script>
</head>
<body class="topBarDisabled">
<div class="container-fluid">
<header>
<div id="banner">
<div class="pull-left"><a href="../../.." id="bannerLeft"><img src="../images/ls-logo.jpg" alt="" style="" /></a></div>
<div class="pull-right"><a href=".././" id="bannerRight"><img src="../images/logo.png" alt="" style="" /></a></div>
<div class="clear"><hr/></div>
</div>
<div id="breadcrumbs">
<ul class="breadcrumb">
<li id="publishDate">Last Published: 2024-03-06<span class="divider">|</span>
</li>
<li id="projectVersion">Version: 2.23.1</li>
<li class="pull-right"><span class="divider">|</span>
<a href="https://github.com/apache/logging-log4j2" class="externalLink" title="GitHub">GitHub</a></li>
<li class="pull-right"><span class="divider">|</span>
<a href="../../../" title="Logging Services">Logging Services</a></li>
<li class="pull-right"><span class="divider">|</span>
<a href="https://www.apache.org/" class="externalLink" title="Apache">Apache</a></li>
<li class="pull-right"><a href="https://cwiki.apache.org/confluence/display/LOGGING/Log4j" class="externalLink" title="Logging Wiki">Logging Wiki</a></li>
</ul>
</div>
</header>
<div class="row-fluid">
<header id="leftColumn" class="span2">
<nav class="well sidebar-nav">
<ul class="nav nav-list">
<li class="nav-header"><img class="imageLink" src="../img/glyphicons/home.png" alt="Apache Log4j™ 2" style="border: 0;" /> Apache Log4j™ 2</li>
<li><a href="../index.html" title="About"><span class="none"></span>About</a></li>
<li><a href="../download.html" title="Download"><span class="none"></span>Download</a></li>
<li><a href="../support.html" title="Support"><span class="none"></span>Support</a></li>
<li><a href="../maven-artifacts.html" title="Maven, Ivy, Gradle Artifacts"><span class="icon-chevron-right"></span>Maven, Ivy, Gradle Artifacts</a></li>
<li><a href="../release-notes.html" title="Release Notes"><span class="none"></span>Release Notes</a></li>
<li><a href="../faq.html" title="FAQ"><span class="none"></span>FAQ</a></li>
<li><a href="../performance.html" title="Performance"><span class="icon-chevron-right"></span>Performance</a></li>
<li><a href="../articles.html" title="Articles and Tutorials"><span class="none"></span>Articles and Tutorials</a></li>
<li><a href="../security.html" title="Security"><span class="icon-chevron-right"></span>Security</a></li>
<li class="nav-header"><img class="imageLink" src="../img/glyphicons/book.png" alt="Manual" style="border: 0;" /> Manual</li>
<li><a href="../manual/index.html" title="Introduction"><span class="none"></span>Introduction</a></li>
<li><a href="../manual/architecture.html" title="Architecture"><span class="none"></span>Architecture</a></li>
<li><a href="../manual/api-separation.html" title="API Separation"><span class="none"></span>API Separation</a></li>
<li><a href="../manual/migration.html" title="Log4j 1.x Migration"><span class="icon-chevron-right"></span>Log4j 1.x Migration</a></li>
<li><a href="../manual/api.html" title="Java API"><span class="icon-chevron-right"></span>Java API</a></li>
<li><a href="../../kotlin" title="Kotlin API"><span class="none"></span>Kotlin API</a></li>
<li><a href="../../scala" title="Scala API"><span class="none"></span>Scala API</a></li>
<li><a href="../manual/configuration.html" title="Configuration"><span class="icon-chevron-right"></span>Configuration</a></li>
<li><a href="../manual/usage.html" title="Usage"><span class="icon-chevron-right"></span>Usage</a></li>
<li><a href="../manual/webapp.html" title="Web Applications and JSPs"><span class="icon-chevron-right"></span>Web Applications and JSPs</a></li>
<li><a href="../manual/lookups.html" title="Lookups"><span class="icon-chevron-right"></span>Lookups</a></li>
<li><a href="../manual/appenders.html" title="Appenders"><span class="icon-chevron-right"></span>Appenders</a></li>
<li><a href="../manual/layouts.html" title="Layouts"><span class="icon-chevron-right"></span>Layouts</a></li>
<li><a href="../manual/filters.html" title="Filters"><span class="icon-chevron-right"></span>Filters</a></li>
<li><a href="../manual/async.html" title="Async Loggers"><span class="icon-chevron-right"></span>Async Loggers</a></li>
<li><a href="../manual/garbagefree.html" title="Garbage-free Logging"><span class="icon-chevron-right"></span>Garbage-free Logging</a></li>
<li><a href="../manual/jmx.html" title="JMX"><span class="none"></span>JMX</a></li>
<li><a href="../manual/logsep.html" title="Logging Separation"><span class="none"></span>Logging Separation</a></li>
<li><a href="../manual/extending.html" title="Extending Log4j"><span class="icon-chevron-right"></span>Extending Log4j</a></li>
<li><a href="../manual/plugins.html" title="Plugins"><span class="icon-chevron-right"></span>Plugins</a></li>
<li><a href="../manual/customconfig.html" title="Programmatic Log4j Configuration"><span class="icon-chevron-right"></span>Programmatic Log4j Configuration</a></li>
<li><a href="../manual/customloglevels.html" title="Custom Log Levels"><span class="icon-chevron-right"></span>Custom Log Levels</a></li>
<li class="nav-header"><img class="imageLink" src="../img/glyphicons/pencil.png" alt="For Contributors" style="border: 0;" /> For Contributors</li>
<li><a href="../guidelines.html" title="Guidelines"><span class="none"></span>Guidelines</a></li>
<li><a href="../javastyle.html" title="Style Guide"><span class="none"></span>Style Guide</a></li>
<li class="nav-header"><img class="imageLink" src="../img/glyphicons/cog.png" alt="Components" style="border: 0;" /> Components</li>
<li><a href="../log4j-api.html" title="API"><span class="none"></span>API</a></li>
<li><a href="../log4j-jcl.html" title="Commons Logging Bridge"><span class="none"></span>Commons Logging Bridge</a></li>
<li><a href="../log4j-1.2-api.html" title="Log4j 1.2 API"><span class="none"></span>Log4j 1.2 API</a></li>
<li><a href="../log4j-slf4j-impl.html" title="SLF4J Binding"><span class="none"></span>SLF4J Binding</a></li>
<li><a href="../log4j-jul.html" title="JUL Adapter"><span class="none"></span>JUL Adapter</a></li>
<li><a href="../log4j-jpl.html" title="JDK Platform Logger"><span class="none"></span>JDK Platform Logger</a></li>
<li><a href="../log4j-to-slf4j.html" title="Log4j 2 to SLF4J Adapter"><span class="none"></span>Log4j 2 to SLF4J Adapter</a></li>
<li><a href="../log4j-flume-ng.html" title="Apache Flume Appender"><span class="none"></span>Apache Flume Appender</a></li>
<li><a href="../log4j-taglib.html" title="Log4j Tag Library"><span class="none"></span>Log4j Tag Library</a></li>
<li><a href="../log4j-jmx-gui.html" title="Log4j JMX GUI"><span class="none"></span>Log4j JMX GUI</a></li>
<li><a href="../log4j-web.html" title="Log4j Web Application Support"><span class="none"></span>Log4j Web Application Support</a></li>
<li><a href="../log4j-jakarta-web.html" title="Log4j Jakarta Web Application Support"><span class="none"></span>Log4j Jakarta Web Application Support</a></li>
<li><a href="../log4j-appserver.html" title="Log4j Application Server Integration"><span class="none"></span>Log4j Application Server Integration</a></li>
<li><a href="../log4j-couchdb.html" title="Log4j CouchDB appender"><span class="none"></span>Log4j CouchDB appender</a></li>
<li><a href="../log4j-mongodb3.html" title="Log4j MongoDB3 appender"><span class="none"></span>Log4j MongoDB3 appender</a></li>
<li><a href="../log4j-mongodb4.html" title="Log4j MongoDB4 appender"><span class="none"></span>Log4j MongoDB4 appender</a></li>
<li><a href="../log4j-cassandra.html" title="Log4j Cassandra appender"><span class="none"></span>Log4j Cassandra appender</a></li>
<li><a href="../log4j-iostreams.html" title="Log4j IO Streams"><span class="none"></span>Log4j IO Streams</a></li>
<li><a href="../log4j-docker.html" title="Log4j Docker Support"><span class="none"></span>Log4j Docker Support</a></li>
<li><a href="../log4j-kubernetes.html" title="Log4j Kubernetes Support"><span class="none"></span>Log4j Kubernetes Support</a></li>
<li><a href="../log4j-spring-boot.html" title="Log4j Spring Boot"><span class="none"></span>Log4j Spring Boot</a></li>
<li><a href="../log4j-spring-cloud-config-client.html" title="Log4j Spring Cloud Config Client"><span class="none"></span>Log4j Spring Cloud Config Client</a></li>
<li class="nav-header"><img class="imageLink" src="../img/glyphicons/tag.png" alt="Related Projects" style="border: 0;" /> Related Projects</li>
<li><a href="../../../chainsaw/2.x/index.html" title="Chainsaw"><span class="none"></span>Chainsaw</a></li>
<li><a href="../../../log4cxx/latest_stable/index.html" title="Log4Cxx"><span class="none"></span>Log4Cxx</a></li>
<li><a href="../../../log4j-audit/latest/index.html" title="Log4j Audit"><span class="none"></span>Log4j Audit</a></li>
<li><a href="../../kotlin" title="Log4j Kotlin"><span class="none"></span>Log4j Kotlin</a></li>
<li><a href="../../scala" title="Log4j Scala"><span class="none"></span>Log4j Scala</a></li>
<li><a href="../../transform" title="Log4j Transform"><span class="none"></span>Log4j Transform</a></li>
<li><a href="../../../log4net/index.html" title="Log4Net"><span class="none"></span>Log4Net</a></li>
<li class="nav-header"><img class="imageLink" src="../img/glyphicons/link.png" alt="Legacy Sites" style="border: 0;" /> Legacy Sites</li>
<li><a href="../../log4j-2.12.4/" title="Log4j 2.12.4 - Java 7"><span class="none"></span>Log4j 2.12.4 - Java 7</a></li>
<li><a href="../../log4j-2.3.2/" title="Log4j 2.3.2 - Java 6"><span class="none"></span>Log4j 2.3.2 - Java 6</a></li>
<li><a href="../../1.2/" title="Log4j 1.2 - End of Life"><span class="none"></span>Log4j 1.2 - End of Life</a></li>
<li class="nav-header"><img class="imageLink" src="../img/glyphicons/info.png" alt="Project Information" style="border: 0;" /> Project Information</li>
<li><a href="../team.html" title="Project Team"><span class="none"></span>Project Team</a></li>
<li><a href="https://www.apache.org/licenses/LICENSE-2.0" class="externalLink" title="Project License"><span class="none"></span>Project License</a></li>
<li><a href="https://github.com/apache/logging-log4j2" class="externalLink" title="Source Repository"><span class="none"></span>Source Repository</a></li>
<li><a href="../runtime-dependencies.html" title="Runtime Dependencies"><span class="none"></span>Runtime Dependencies</a></li>
<li><a href="../javadoc.html" title="Javadoc"><span class="none"></span>Javadoc</a></li>
<li><a href="../thanks.html" title="Thanks"><span class="none"></span>Thanks</a></li>
</ul>
</nav>
<div class="well sidebar-nav">
<div id="poweredBy">
<div class="clear"></div>
<div class="clear"></div>
<div class="clear"></div>
<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" /></a>
</div>
</div>
</header>
<main id="bodyColumn" class="span10" >
<div class="sect1">
<h2 id="release-notes-2-21-0">2.21.0</h2>
<div class="sectionbody">
<div class="dlist">
<dl>
<dt class="hdlist1">Release date</dt>
<dd>
<p>2023-10-12</p>
</dd>
</dl>
</div>
<div class="paragraph">
<p>This release primarily focuses on enhancements to our OSGi and JPMS support and contains several bug fixes.
It will be the first release built and signed by the CI using the <a href="https://keyserver.ubuntu.com/pks/lookup?search=077E8893A6DCC33DD4A4D5B256E73BA9A0B592D0&amp;op=index">ASF Logging Services Release Manager GPG key</a>, which is shared in <a href="https://www.apache.org/dist/logging/KEYS">KEYS</a>.</p>
</div>
<div class="paragraph">
<p>The Log4j 2.21.0 API, as well as the other artifacts, maintains binary compatibility with the previous release.</p>
</div>
<div class="paragraph">
<p>Apache Log4j 2.21.0 requires Java 8 to run.
The build requires JDK 11 and generates reproducible binaries.</p>
</div>
<div class="paragraph">
<p>For complete information on Apache Log4j 2, including instructions on how to submit bug reports, patches, get support, or suggestions for improvement, see <a href="http://logging.apache.org/log4j/2.x/">the Apache Log4j 2 website</a>.</p>
</div>
<div class="sect2">
<h3 id="osgi_changes">OSGi changes</h3>
<div class="paragraph">
<p>All the published artifacts are OSGi bundles or fragments.</p>
</div>
<div class="paragraph">
<p>This release introduces a change in the bundle symbolic names to allow them to function as JPMS module name: all hyphens <code>-</code> present in the bundle names of previous releases were replaced by dots <code>.</code>.</p>
</div>
</div>
<div class="sect2">
<h3 id="jpms_changes">JPMS changes</h3>
<div class="paragraph">
<p>All the published artifacts have been migrated from automatic modules to named JPMS modules.
All packages marked as private in the Javadoc are not exported.</p>
</div>
<div class="paragraph">
<p>The module name of four bridges (<code>log4j-slf4j-impl</code>, <code>log4j-slf4j2-impl</code>, <code>log4j-to-jul</code> and <code>log4j-to-slf4j</code>) have been changed to adhere to the same convention as the OSGi bundle names.</p>
</div>
</div>
<div class="sect2">
<h3 id="release-notes-2-21-0-added">Added</h3>
<div class="ulist">
<ul>
<li>
<p>Added marker parent support to <code>JsonTemplateLayout</code> (<a href="https://github.com/apache/logging-log4j2/pull/1381">1381</a>)</p>
</li>
<li>
<p>Added <a href="https://facebook.github.io/zstd/">ZStandard compression</a> support (<a href="https://github.com/apache/logging-log4j2/issues/1508">1508</a>, <a href="https://github.com/apache/logging-log4j2/pull/1514">1514</a>)</p>
</li>
<li>
<p>Added a warning for incorrect syntax of highlighting styles (<a href="https://github.com/apache/logging-log4j2/issues/1545">1545</a>, <a href="https://github.com/apache/logging-log4j2/pull/1637">1637</a>)</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="release-notes-2-21-0-changed">Changed</h3>
<div class="ulist">
<ul>
<li>
<p>Open <code>FileExtension</code> methods to allow their usage in custom <code>RolloverStrategy</code>s (<a href="https://github.com/apache/logging-log4j2/issues/1365">1365</a>, <a href="https://github.com/apache/logging-log4j2/pull/1683">1683</a>)</p>
</li>
<li>
<p>Bumped the minimum Java version required for the build to JDK 11. Runtime requirements remain unchanged. (<a href="https://github.com/apache/logging-log4j2/issues/1369">1369</a>)</p>
</li>
<li>
<p>Set the default <code>minLevel</code> and <code>maxLevel</code> of <code>LevelRangeFilter</code> to <code>OFF</code> and <code>ALL</code>, respectively (<a href="https://github.com/apache/logging-log4j2/pull/1503">1503</a>)</p>
</li>
<li>
<p>Removed additional <code>isFiltered</code> checks in <code>AsyncLoggerConfig</code> (<a href="https://github.com/apache/logging-log4j2/pull/1550">1550</a>)</p>
</li>
<li>
<p>Use Java version-specific warnings in <code>StackLocator</code> (<a href="https://github.com/apache/logging-log4j2/pull/1760">1760</a>)</p>
</li>
<li>
<p>Started logging a status error event instead of an NPE in <code>OsgiServiceLocator.loadServices(Class, Lookup, boolean)</code> when a bundle has no valid <code>BundleContext</code> for a service type</p>
</li>
<li>
<p>Implemented a CI-based release process</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="release-notes-2-21-0-fixed">Fixed</h3>
<div class="ulist">
<ul>
<li>
<p>Added validation to rolling file manager path conditions (<a href="https://github.com/apache/logging-log4j2/issues/1231">1231</a>)</p>
</li>
<li>
<p>Adapted the OSGi metadata of <code>log4j-to-slf4j</code> to work with SLF4J 1 and 2. To achieve that used a version range of <code>[1.7,3)</code> for the imported SLF4J packages. (<a href="https://github.com/apache/logging-log4j2/issues/1232">1232</a>)</p>
</li>
<li>
<p>Fixed Javadoc failures (<a href="https://github.com/apache/logging-log4j2/issues/1275">1275</a>, <a href="https://github.com/apache/logging-log4j2/pull/1753">1753</a>)</p>
</li>
<li>
<p>Removed locale-dependent <code>toLowerCase/toUpperCase</code> calls (<a href="https://github.com/apache/logging-log4j2/pull/1281">1281</a>)</p>
</li>
<li>
<p>Redirected old <code>/&lt;module&gt;/apidocs</code> URLs (broken in 2.20.0) to <code>/javadoc/&lt;module&gt;</code> (<a href="https://github.com/apache/logging-log4j2/pull/1284">1284</a>)</p>
</li>
<li>
<p>Added environment variable arbiter (<a href="https://github.com/apache/logging-log4j2/issues/1312">1312</a>)</p>
</li>
<li>
<p>Fixed logging of <code>java.sql.Date</code> objects by appending it before Log4J tries to call <code>java.util.Date.toInstant()</code> on it (<a href="https://github.com/apache/logging-log4j2/pull/1366">1366</a>)</p>
</li>
<li>
<p>Adapted the OSGi metadata of <code>log4j-api</code>, <code>log4j-core</code>, <code>log4j-slf4j-impl</code> and <code>log4j-slf4j2-impl</code> to activate the bundle when it is accessed. To achieve that set the <code>Bundle-ActivationPolicy</code> to <code>lazy</code> for the log4j bundles. (<a href="https://github.com/apache/logging-log4j2/issues/1367">1367</a>)</p>
</li>
<li>
<p>Avoided using released objects in <code>StackTraceStringResolver</code> of <code>JsonTemplateLayout</code> (<a href="https://github.com/apache/logging-log4j2/pull/1380">1380</a>)</p>
</li>
<li>
<p>Added missing setter for <code>connectionStringSource</code> in <code>MongoDb4Provider</code> builder (<a href="https://github.com/apache/logging-log4j2/issues/1389">1389</a>)</p>
</li>
<li>
<p>Fixed NPE in <code>PluginElementVisitor</code> (<a href="https://github.com/apache/logging-log4j2/issues/1391">1391</a>)</p>
</li>
<li>
<p>Added <code>columnType</code> as alias for the column mapping <code>type</code> attribute (<a href="https://github.com/apache/logging-log4j2/issues/1405">1405</a>)</p>
</li>
<li>
<p>Restored <code>Log4jMarker</code> visibility in SLF4J adapters (<a href="https://github.com/apache/logging-log4j2/issues/1414">1414</a>)</p>
</li>
<li>
<p>Fixed buffer size in <code>Log4jFixedFormatter</code> date time formatter (<a href="https://github.com/apache/logging-log4j2/pull/1418">1418</a>)</p>
</li>
<li>
<p>Fixed the propagation of synchronous action failures in <code>RollingFileManager</code> and <code>FileRenameAction</code> (<a href="https://github.com/apache/logging-log4j2/issues/1445">1445</a>, <a href="https://github.com/apache/logging-log4j2/pull/1549">1549</a>)</p>
</li>
<li>
<p>Fixed <code>RollingFileManager</code> to propagate failed synchronous actions correctly (<a href="https://github.com/apache/logging-log4j2/issues/1445">1445</a>)</p>
</li>
<li>
<p>Replaced the usage of <code>System.out</code> in <code>StackLocator</code> for warnings with <code>System.err</code> (<a href="https://github.com/apache/logging-log4j2/issues/1484">1484</a>)</p>
</li>
<li>
<p>Fixed concurrent date-time formatting issue in <code>PatternLayout</code> (<a href="https://github.com/apache/logging-log4j2/issues/1485">1485</a>)</p>
</li>
<li>
<p>Fixed runtime dependencies documentation (<a href="https://github.com/apache/logging-log4j2/pull/1530">1530</a>)</p>
</li>
<li>
<p>Allowed to override FQCN in <code>Log4jEventBuilder</code> by implementing <code>CallerBoundaryAware</code> (<a href="https://github.com/apache/logging-log4j2/pull/1533">1533</a>)</p>
</li>
<li>
<p>Migrated MongoDB tests to JUnit 5 and Flapdoodle Embedded MongoDB 4 (<a href="https://github.com/apache/logging-log4j2/issues/1589">1589</a>)</p>
</li>
<li>
<p>Rewrote message parameter formatter with improved escape handling (<a href="https://github.com/apache/logging-log4j2/issues/1626">1626</a>)</p>
</li>
<li>
<p>Improved formatting and serialization of <code>StackTraceElement</code> on JDK 9+ (<a href="https://github.com/apache/logging-log4j2/issues/1640">1640</a>)</p>
</li>
<li>
<p>Fixed <code>MemoryMappedFileAppender</code> buffer unmapping on JRE 9+ (<a href="https://github.com/apache/logging-log4j2/issues/1646">1646</a>)</p>
</li>
<li>
<p>Fixed rollover strategy in the Log4j 1.x compatibility layer (<a href="https://github.com/apache/logging-log4j2/issues/1650">1650</a>)</p>
</li>
<li>
<p>Removed incorrect mention of <code>base64</code> lookup and improve the rest of the lookup manual (<a href="https://github.com/apache/logging-log4j2/issues/1681">1681</a>, <a href="https://issues.apache.org/jira/browse/LOG4J2-3504">LOG4J2-3504</a>)</p>
</li>
<li>
<p>Implemented <code>LocationAware</code> for <code>JsonTemplateLayout</code>, since this was causing location not being passed to underlying appenders (<a href="https://github.com/apache/logging-log4j2/issues/1692">1692</a>)</p>
</li>
<li>
<p>Added support for <code>long</code> values in MongoDb 4 appender to configure <code>collectionSize</code> (<a href="https://github.com/apache/logging-log4j2/issues/1747">1747</a>)</p>
</li>
<li>
<p>Only shutdown Log4j after last <code>Log4jServletContextListener</code> is executed (<a href="https://github.com/apache/logging-log4j2/issues/1782">1782</a>)</p>
</li>
<li>
<p>Allowed using Spring Arbiter without a Spring environment (<a href="https://github.com/apache/logging-log4j2/issues/1783">1783</a>)</p>
</li>
<li>
<p>Fixed context data loss if <code>&lt;AsyncLogger&gt;</code> components are used with an all async logger context (<a href="https://github.com/apache/logging-log4j2/issues/1786">1786</a>)</p>
</li>
<li>
<p>Fixed <code>JsonTemplateLayout</code> NPE thrown on custom log levels (<a href="https://github.com/apache/logging-log4j2/issues/1805">1805</a>)</p>
</li>
<li>
<p>Improved <code>Log4j-config.xsd</code> schema (<a href="https://issues.apache.org/jira/browse/LOG4J2-170">LOG4J2-170</a>)</p>
</li>
<li>
<p>Fixed NPE in <code>ContextSelector</code> (<a href="https://issues.apache.org/jira/browse/LOG4J2-3217">LOG4J2-3217</a>, <a href="https://github.com/apache/logging-log4j2/pull/1538">1538</a>)</p>
</li>
<li>
<p>Avoided allocating <code>ThreadLocal</code>s in <code>AbstractLogger</code> when they are disabled, since this was causing memory leaks due to retained reference to class loaders in web applications (<a href="https://issues.apache.org/jira/browse/LOG4J2-3657">LOG4J2-3657</a>)</p>
</li>
<li>
<p>Fixed <code>%notEmpty</code> directive of <code>PatternLayout</code> for empty MDC/NDC inputs (<a href="https://issues.apache.org/jira/browse/LOG4J2-3660">LOG4J2-3660</a>)</p>
</li>
<li>
<p>Fixed file descriptor leak on Tomcat (<a href="https://issues.apache.org/jira/browse/LOG4J2-3663">LOG4J2-3663</a>)</p>
</li>
<li>
<p>Ensured <code>FileOutputStream</code> is closed in <code>CommonsCompressAction.execute()</code></p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="release-notes-2-21-0-removed">Removed</h3>
<div class="ulist">
<ul>
<li>
<p>Moved <code>log4j-jmx-gui</code> to <a href="https://github.com/apache/logging-log4j-jmx-gui/actions">its own repository</a> along with its own release cycle</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="release-notes-2-21-0-updated">Updated</h3>
<div class="ulist">
<ul>
<li>
<p>Update Eclipse Angus Activation to version <a href="https://github.com/eclipse-ee4j/angus-activation/releases/tag/2.0.1">2.0.1</a> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update Eclipse Angus Mail to version <a href="https://github.com/eclipse-ee4j/angus-mail/releases/tag/2.0.2">2.0.2</a> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update <code>com.datastax.cassandra:cassandra-driver-core</code> to version <code>3.11.5</code> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update Apache Cassandra to version <a href="https://github.com/apache/cassandra/blob/cassandra-3.11/CHANGES.txt">3.11.16</a> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update Apache Commons Compress to version <a href="https://commons.apache.org/proper/commons-compress/changes-report.html#a1.24.0">1.24.0</a> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update Apache Commons CSV to version <a href="https://commons.apache.org/proper/commons-csv/changes-report.html#a1.10.0">1.10.0</a> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update Jackson to version <a href="https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.15.2">2.15.2</a> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update Jakarta Activation API to version <a href="https://jakarta.ee/specifications/activation/2.1/changelog/">2.1.2</a> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update Jakarta Mail API to version <a href="https://jakarta.ee/specifications/mail/2.1/changelog/">2.1.2</a> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update JCTools to version <a href="https://github.com/JCTools/JCTools/blob/master/RELEASE-NOTES.md">4.0.1</a> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update Apache Kafka to version <a href="https://archive.apache.org/dist/kafka/3.4.0/RELEASE_NOTES.html">3.4.0</a> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update Kubernetes client to version <a href="https://github.com/fabric8io/kubernetes-client/releases?q=5.12.4">5.12.4</a> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update <code>org.mongodb:mongodb-driver-core</code> to version <code>4.10.2</code> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update <code>io.netty:netty-bom</code> to version <code>4.1.97</code> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update Spring Boot to version <a href="https://github.com/spring-projects/spring-boot/releases/tag/v2.7.15">2.7.15</a> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update Spring Framework to version <a href="https://github.com/spring-projects/spring-framework/releases/tag/v5.3.29">5.3.29</a> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update Tomcat JULI to version <code>10.0.27</code> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
<li>
<p>Update Woodstox to version <a href="https://github.com/FasterXML/woodstox/blob/master/release-notes/VERSION">6.5.1</a> (<a href="https://github.com/apache/logging-log4j2/issues/1591">1591</a>)</p>
</li>
</ul>
</div>
</div>
</div>
</div>
</main>
</div>
</div>
<hr/>
<footer>
<div class="container-fluid">
<div class="row-fluid">
<p align="center">Copyright &copy; 1999-2024 <a class="external" href="https://www.apache.org">The Apache Software Foundation</a>. All Rights Reserved.<br>
Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, and the Apache Logging project logo are trademarks of The Apache Software Foundation.</p>
</div>
</div>
</footer>
<script>
if(anchors) {
anchors.add();
}
</script>
</body>
</html>