CINXE.COM
Apache Log4j :: Apache Log4j
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Apache Log4j :: Apache Log4j</title> <link rel="canonical" href="https://logging.apache.org/log4j/2.x/index.html"> <meta name="generator" content="Antora 3.2.0-alpha.8"> <link rel="stylesheet" href="./_/css/site.css"> <link rel="icon" href="./_/../_images/favicon.ico" type="image/x-icon"> <!-- `@asciidoctor/tabs` extension styles --> <link rel="stylesheet" href="./_/css/vendor/tabs.css"> <style> /* Swap colors of `IMPORTANT` and `WARNING` blocks */ .doc .admonitionblock.important .icon { background-color: #f70; } .doc .admonitionblock.warning .icon { background-color: #e40046; } /* Default `h4`, `h5`, and `h6` are smaller than the normal text, fix header font sizing: */ .doc h1 { font-size: 1.9rem; } .doc h2 { font-size: 1.7rem; } .doc h3 { font-size: 1.5rem; font-weight: 400; } .doc h4 { font-size: 1.3rem; font-weight: 500; } .doc h5 { font-size: 1.1rem; font-weight: 500; text-decoration: underline; } .doc h6 { font-size: 0.9rem; font-weight: 500; text-decoration: underline; } /* Default `code`, `pre`, and `.colist` (source code annotations) fonts are too big, adjust them: */ .doc .colist>table code, .doc p code, .doc thead code { font-size: 0.8em; } .doc pre { font-size: 0.7rem; } .doc .colist { font-size: 0.75rem; } /* Make links more visible: */ .doc a { text-decoration: underline; } .doc a code { text-decoration: underline; color: #1565c0; } /* Tab header fonts aren't rendered good, adjusting the font weight: */ .tablist > ul li { font-weight: 500; } /* `page-toclevels` greater than 4 are not supported by Antora UI, patching it: */ .toc .toc-menu li[data-level="4"] a { padding-left: 2.75rem; } /* Replace the default highlight.js color for strings from red (unnecessarily signaling something negative) to green: */ .hljs-string { color: #0f8532; } </style> </head> <body class="article"> <header class="header"> <nav class="navbar"> <div class="navbar-brand"> <div class="navbar-item"> <img src="./_/../_images/logo-small-white.png" alt="Apache Log4j"/> </div> </div> <div id="topbar-nav" class="navbar-menu"> <div class="navbar-end"> <a class="navbar-item" href="https://logging.apache.org">a subproject of <strong>Apache Logging Services</strong></a> </div> </div> </nav> </header> <div class="body"> <div class="nav-container" data-component="ROOT" data-version=""> <aside class="nav"> <div class="panels"> <div class="nav-panel-menu is-active" data-panel="menu"> <nav class="nav-menu"> <button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" style="display: none"></button> <h3 class="title"><a href="index.html">Home</a></h3> <ul class="nav-list"> <li class="nav-item" data-depth="0"> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle"></button> <a class="nav-link" href="download.html">Download</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="release-notes.html">Release Notes</a> </li> </ul> </li> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle"></button> <a class="nav-link" href="https://logging.apache.org/support.html">Support</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="https://logging.apache.org/security.html">Security</a> </li> </ul> </li> </ul> </li> <li class="nav-item" data-depth="0"> <button class="nav-item-toggle"></button> <a class="nav-link" href="manual/index.html">Manual</a> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <a class="nav-link" href="manual/getting-started.html">Getting started</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="manual/installation.html">Installation</a> </li> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle"></button> <a class="nav-link" href="manual/api.html">API</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle"></button> <a class="nav-link" href="manual/api.html#loggers">Loggers</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="manual/eventlogging.html">Event Logger</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="manual/simple-logger.html">Simple Logger</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="manual/status-logger.html">Status Logger</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="manual/logbuilder.html">Fluent API</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle"></button> <a class="nav-link" href="manual/api.html#fish-tagging">Fish tagging</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="manual/customloglevels.html">Levels</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="manual/markers.html">Markers</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="manual/thread-context.html">Thread Context</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="manual/messages.html">Messages</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="manual/flowtracing.html">Flow Tracing</a> </li> </ul> </li> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle"></button> <a class="nav-link" href="manual/implementation.html">Implementation</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="manual/architecture.html">Architecture</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle"></button> <a class="nav-link" href="manual/config-intro.html">Configuration</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="manual/configuration.html">Configuration file</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="manual/systemproperties.html">Configuration properties</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="manual/customconfig.html">Programmatic configuration</a> </li> <li class="nav-item" data-depth="3"> <button class="nav-item-toggle"></button> <a class="nav-link" href="manual/appenders.html">Appenders</a> <ul class="nav-list"> <li class="nav-item" data-depth="4"> <a class="nav-link" href="manual/appenders/file.html">File appenders</a> </li> <li class="nav-item" data-depth="4"> <a class="nav-link" href="manual/appenders/rolling-file.html">Rolling file appenders</a> </li> <li class="nav-item" data-depth="4"> <a class="nav-link" href="manual/appenders/database.html">Database appenders</a> </li> <li class="nav-item" data-depth="4"> <a class="nav-link" href="manual/appenders/network.html">Network Appenders</a> </li> <li class="nav-item" data-depth="4"> <a class="nav-link" href="manual/appenders/message-queue.html">Message queue appenders</a> </li> <li class="nav-item" data-depth="4"> <a class="nav-link" href="manual/appenders/delegating.html">Delegating Appenders</a> </li> </ul> </li> <li class="nav-item" data-depth="3"> <button class="nav-item-toggle"></button> <a class="nav-link" href="manual/layouts.html">Layouts</a> <ul class="nav-list"> <li class="nav-item" data-depth="4"> <a class="nav-link" href="manual/json-template-layout.html">JSON Template Layout</a> </li> <li class="nav-item" data-depth="4"> <a class="nav-link" href="manual/pattern-layout.html">Pattern Layout</a> </li> </ul> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="manual/lookups.html">Lookups</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="manual/filters.html">Filters</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="manual/scripts.html">Scripts</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="manual/jmx.html">JMX</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle"></button> <a class="nav-link" href="manual/extending.html">Extending</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="manual/plugins.html">Plugins</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle"></button> <a class="nav-link" href="manual/performance.html">Performance</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="manual/async.html">Asynchronous loggers</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="manual/garbagefree.html">Garbage-free logging</a> </li> </ul> </li> </ul> </li> </ul> </li> <li class="nav-item" data-depth="0"> <button class="nav-item-toggle"></button> <span class="nav-text">References</span> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <a class="nav-link" href="plugin-reference.html">Plugin reference</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="javadoc.html">Java API reference</a> </li> </ul> </li> <li class="nav-item" data-depth="0"> <button class="nav-item-toggle"></button> <span class="nav-text">Resources</span> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <a class="nav-link" href="faq.html">F.A.Q.</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="migrate-from-log4j1.html">Migrating from Log4j 1</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="migrate-from-logback.html">Migrating from Logback</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="migrate-from-slf4j.html">Migrating from SLF4J</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="hibernate.html">Integrating with Hibernate</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="jakarta.html">Integrating with Jakarta EE</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="soa.html">Integrating with service-oriented architectures</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="development.html">Development</a> </li> </ul> </li> <li class="nav-item" data-depth="0"> <button class="nav-item-toggle"></button> <a class="nav-link" href="components.html">Components</a> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <a class="nav-link" href="log4j-iostreams.html">Log4j IOStreams</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="log4j-spring-boot.html">Log4j Spring Boot Support</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="log4j-spring-cloud-config-client.html">Log4j Spring Cloud Configuration</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="log4j-jul.html">JUL-to-Log4j bridge</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="log4j-to-jul.html">Log4j-to-JUL bridge</a> </li> </ul> </li> <li class="nav-item" data-depth="0"> <button class="nav-item-toggle"></button> <span class="nav-text">Related projects</span> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <a class="nav-link" href="https://logging.apache.org/log4j/jakarta/index.html">Log4j Jakarta EE</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="https://logging.apache.org/log4j/jmx-gui/index.html">Log4j JMX GUI</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="https://logging.apache.org/log4j/kotlin/index.html">Log4j Kotlin</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="https://logging.apache.org/log4j/scala/index.html">Log4j Scala</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="https://logging.apache.org/log4j/tools/index.html">Log4j Tools</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="https://logging.apache.org/log4j/transform/index.html">Log4j Transformation Tools</a> </li> </ul> </li> </ul> </nav> </div> </div> </aside> </div> <main class="article"> <div class="toolbar" role="navigation"> <button class="nav-toggle"></button> <a href="index.html" class="home-link is-current"></a> <nav class="breadcrumbs" aria-label="breadcrumbs"> <ul> <li><a href="index.html">Home</a></li> <li><a href="index.html">Apache Log4j</a></li> </ul> </nav> <div class="edit-this-page"><a href="https://github.com/apache/logging-log4j2/edit/2.x/src/site/antora/modules/ROOT/pages/index.adoc">Edit this Page</a></div> </div> <div class="content"> <aside class="toc sidebar" data-title="Contents" data-levels="4"> <div class="toc-menu"></div> </aside> <article class="doc"> <h1 class="page">Apache Log4j</h1> <div id="preamble"> <div class="sectionbody"> <div class="paragraph"> <p>Apache Log4j is a versatile, industrial-grade Java logging framework composed of an API, its implementation, and components to assist the deployment for various use cases. The project is actively maintained by a <a href="https://logging.apache.org/team-list.html">team</a> of volunteers and <a href="https://logging.apache.org/support.html">support</a>ed by a big community.</p> </div> </div> </div> <div class="sect1"> <h2 id="shortcuts"><a class="anchor" href="#shortcuts"></a>Shortcuts</h2> <div class="sectionbody"> <div class="ulist"> <ul> <li> <p><a href="manual/getting-started.html" class="xref page">Getting started</a></p> </li> <li> <p><a href="manual/installation.html" class="xref page">How can I install Log4j? Which dependencies are needed?</a></p> </li> <li> <p><a href="manual/configuration.html" class="xref page">How can I configure my <code>log4j2.xml</code>?</a></p> </li> <li> <p><a href="release-notes.html" class="xref page">Where are the release notes?</a></p> </li> <li> <p><a href="https://logging.apache.org/support.html"><strong>I need help!</strong></a></p> </li> </ul> </div> </div> </div> <div class="sect1"> <h2 id="features"><a class="anchor" href="#features"></a>Features</h2> <div class="sectionbody"> <div class="paragraph"> <p>Below, we share some highlights from Log4j features.</p> </div> <div class="dlist"> <dl> <dt class="hdlist1">Batteries included</dt> <dd> <p>Log4j bundles a rich set of components to assist various use cases.</p> <div class="ulist"> <ul> <li> <p><a href="manual/appenders.html" class="xref page">Appenders</a> targeting files, network sockets, databases, SMTP servers, etc.</p> </li> <li> <p><a href="manual/layouts.html" class="xref page">Layouts</a> that can render CSV, HTML, JSON, Syslog, etc. formatted outputs</p> </li> <li> <p><a href="manual/filters.html" class="xref page">Filters</a> based on log event rates, regular expressions, scripts, time, etc.</p> </li> <li> <p><a href="manual/lookups.html" class="xref page">Lookups</a> for accessing system properties, environment variables, log event fields, etc.</p> </li> </ul> </div> </dd> <dt class="hdlist1">Reliability</dt> <dd> <p>Log4j is built with solid reliability in mind. It can automatically reload its configuration upon modification and will do so without losing log events while reconfiguration occurs.</p> </dd> <dt class="hdlist1">Performance</dt> <dd> <p>When configured correctly, Log4j can deliver excelling performance without almost any burden on the Java garbage collector, and it will do so without sacrificing reliability. Check out the <a href="manual/performance.html" class="xref page">Performance</a> page for details.</p> </dd> <dt class="hdlist1">Extensibility</dt> <dd> <p>Log4j contains a fully-fledged <a href="manual/plugins.html" class="xref page">plugin support</a> that users can leverage to extend functionality. You can easily add your components (layouts, appenders, filters, etc.) or customize existing ones (e.g., adding new directives to <a href="manual/pattern-layout.html#extending" class="xref page">Pattern Layout</a> or <a href="manual/json-template-layout.html#extending" class="xref page">JSON Template Layout</a>). Check out the <a href="manual/extending.html" class="xref page">Extending Log4j</a> page.</p> </dd> <dt class="hdlist1">Powerful API</dt> <dd> <p>Log4j is a logging system where the API (called Log4j API) and its implementation (called Log4j Core) is distinctly separate from each other. <a href="manual/api.html" class="xref page">Log4j API</a> provides the most feature-rich logging facade in the market; support for various <code>Message</code> types (such as <code>Object</code> or <code>Map</code>) besides plain <code>String</code>, lambda expressions, parameterized logging, markers, levels, diagnostic contexts (aka. MDC/NDC), etc. Log4j team takes backward compatibility very seriously and makes sure people relying on Log4j API gets a logging facade that is straightforward to use in a correct and future-proof way. Check out the <a href="manual/api.html" class="xref page">Java API</a>, <a href="https://logging.apache.org/log4j/kotlin/index.html">Kotlin API</a> and <a href="https://logging.apache.org/log4j/scala/index.html">Scala API</a> pages for further information.</p> </dd> <dt class="hdlist1">No vendor lock-in</dt> <dd> <p>Log4j API is a generic logging facade for various logging frameworks. While Log4j Core implements it at its fullest, you can easily switch to other implementations such as Logback or JUL (<code>java.util.logging</code>).</p> </dd> </dl> </div> </div> </div> </article> </div> </main> </div> <footer class="footer"> <p> Copyright 漏 1999-2025 <a href="https://www.apache.org/">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache Software License, Version 2.0</a>. Please read our <a href="https://privacy.apache.org/policies/privacy-policy-public.html">privacy policy</a>. </p> <p> Apache, Log4j, and the Apache feather logo are trademarks or registered trademarks of The Apache Software Foundation. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. </p> </footer> <!-- Matomo --> <script> var _paq = window._paq = window._paq || []; _paq.push(["disableCookies"]); _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://analytics.apache.org/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '42']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script> <noscript><p><img src="https://analytics.apache.org/matomo.php?idsite=42&rec=1" style="border:0;" alt="" /></p></noscript> <!-- End Matomo Code --> <script id="site-script" src="./_/js/site.js" data-ui-root-path="./_"></script> <script async src="./_/js/vendor/highlight.js"></script> <!-- `@asciidoctor/tabs` extension scripts --> <script async src="./_/js/vendor/tabs.js"></script> </body> </html>