<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.9.1 from src/site/xdoc/manual/architecture.xml at 2020-05-10
 | Rendered using Apache Maven Fluido Skin 1.8
-->
<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.9.1" />
    <meta name="author" content="Ralph Goers" />
    <title>Log4j &#x2013; Log4j 2 Architecture</title>
    <link rel="stylesheet" href="../css/apache-maven-fluido-1.8.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.8.min.js"></script>
  </head>
  <body class="topBarDisabled">
    <div class="container-fluid">
      <header>
        <div id="banner">
          <div class="pull-left"><a href="http://logging.apache.org" id="bannerLeft"><img src="../images/ls-logo.jpg"  alt=""/></a></div>
          <div class="pull-right"><a href="http://logging.apache.org/log4j/2.x" id="bannerRight"><img src="../images/logo.png"  alt=""/></a></div>
          <div class="clear"><hr/></div>
        </div>

        <div id="breadcrumbs">
          <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2020-05-10<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 2.13.3</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="https://analysis.apache.org/dashboard/index/org.apache.logging.log4j:log4j" class="externalLink" title="Sonar">Sonar</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" 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="../javadoc.html" title="Javadoc"><span class="icon-chevron-right"></span>Javadoc</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="../runtime-dependencies.html" title="Runtime Dependencies"><span class="none"></span>Runtime Dependencies</a></li>
    <li><a href="../changelog.html" title="Changelog"><span class="none"></span>Changelog</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="none"></span>Security</a></li>
    <li><a href="../support.html" title="Support"><span class="none"></span>Support</a></li>
    <li><a href="../thanks.html" title="Thanks"><span class="none"></span>Thanks</a></li>
   <li class="nav-header"><img class="imageLink" src="../img/glyphicons/pencil.png" alt="For Contributors" border="0"/> For Contributors</li>
    <li><a href="../build.html" title="Building Log4j from Source"><span class="none"></span>Building Log4j from Source</a></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/book.png" alt="Manual" border="0"/> Manual</li>
    <li><a href="../manual/index.html" title="Introduction"><span class="none"></span>Introduction</a></li>
    <li class="active"><a href="#"><span class="none"></span>Architecture</a></li>
    <li><a href="../manual/compatibility.html" title="Log4j 1.x Compatibility"><span class="none"></span>Log4j 1.x Compatibility</a></li>
    <li><a href="../manual/migration.html" title="Log4j 1.x Migration"><span class="none"></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="../manual/scala-api.html" 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/tag.png" alt="Related Projects" border="0"/> Related Projects</li>
    <li><a href="http://logging.apache.org/log4j/scala/index.html" class="externalLink" title="Log4j-Scala"><span class="none"></span>Log4j-Scala</a></li>
   <li class="nav-header"><img class="imageLink" src="../img/glyphicons/link.png" alt="Legacy Sites" border="0"/> Legacy Sites</li>
    <li><a href="http://logging.apache.org/log4j/1.2/" class="externalLink" title="Log4j 1.2 - End of Life"><span class="none"></span>Log4j 1.2 - End of Life</a></li>
    <li><a href="http://logging.apache.org/log4j/log4j-2.3/" class="externalLink" title="Log4j 2.3 - Java 6"><span class="none"></span>Log4j 2.3 - Java 6</a></li>
    <li><a href="http://logging.apache.org/log4j/log4j-2.12.1" class="externalLink" title="Log4j 2.12.1 - Java 7"><span class="none"></span>Log4j 2.12.1 - Java 7</a></li>
   <li class="nav-header"><img class="imageLink" src="../img/glyphicons/cog.png" alt="Components" border="0"/> Components</li>
    <li><a href="../log4j-api/index.html" title="API"><span class="none"></span>API</a></li>
    <li><a href="../log4j-core/index.html" title="Implementation"><span class="none"></span>Implementation</a></li>
    <li><a href="../log4j-jcl/index.html" title="Commons Logging Bridge"><span class="none"></span>Commons Logging Bridge</a></li>
    <li><a href="../log4j-1.2-api/index.html" title="Log4j 1.2 API"><span class="none"></span>Log4j 1.2 API</a></li>
    <li><a href="../log4j-slf4j-impl/index.html" title="SLF4J Binding"><span class="none"></span>SLF4J Binding</a></li>
    <li><a href="../log4j-jul/index.html" title="JUL Adapter"><span class="none"></span>JUL Adapter</a></li>
    <li><a href="../log4j-jpl/index.html" title="JDK Platform Logger"><span class="none"></span>JDK Platform Logger</a></li>
    <li><a href="../log4j-to-slf4j/index.html" title="Log4j 2 to SLF4J Adapter"><span class="none"></span>Log4j 2 to SLF4J Adapter</a></li>
    <li><a href="../log4j-flume-ng/index.html" title="Apache Flume Appender"><span class="none"></span>Apache Flume Appender</a></li>
    <li><a href="../log4j-taglib/index.html" title="Log4j Tag Library"><span class="none"></span>Log4j Tag Library</a></li>
    <li><a href="../log4j-jmx-gui/index.html" title="Log4j JMX GUI"><span class="none"></span>Log4j JMX GUI</a></li>
    <li><a href="../log4j-web/index.html" title="Log4j Web Application Support"><span class="none"></span>Log4j Web Application Support</a></li>
    <li><a href="../log4j-appserver/index.html" title="Log4j Application Server Integration"><span class="none"></span>Log4j Application Server Integration</a></li>
    <li><a href="../log4j-couchdb/index.html" title="Log4j CouchDB appender"><span class="none"></span>Log4j CouchDB appender</a></li>
    <li><a href="../log4j-mongodb2/index.html" title="Log4j MongoDB2 appender"><span class="none"></span>Log4j MongoDB2 appender</a></li>
    <li><a href="../log4j-mongodb3/index.html" title="Log4j MongoDB3 appender"><span class="none"></span>Log4j MongoDB3 appender</a></li>
    <li><a href="../log4j-cassandra/index.html" title="Log4j Cassandra appender"><span class="none"></span>Log4j Cassandra appender</a></li>
    <li><a href="../log4j-iostreams/index.html" title="Log4j IO Streams"><span class="none"></span>Log4j IO Streams</a></li>
    <li><a href="../log4j-liquibase/index.html" title="Log4j Liquibase Binding"><span class="none"></span>Log4j Liquibase Binding</a></li>
    <li><a href="../log4j-docker/index.html" title="Log4j Docker Support"><span class="none"></span>Log4j Docker Support</a></li>
    <li><a href="../log4j-spring-cloud-config/log4j-spring-cloud-config-client/index.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/info.png" alt="Project Information" border="0"/> Project Information</li>
    <li><a href="../dependency-convergence.html" title="Dependency Convergence"><span class="none"></span>Dependency Convergence</a></li>
    <li><a href="../dependency-management.html" title="Dependency Management"><span class="none"></span>Dependency Management</a></li>
    <li><a href="../team-list.html" title="Project Team"><span class="none"></span>Project Team</a></li>
    <li><a href="../mail-lists.html" title="Mailing Lists"><span class="none"></span>Mailing Lists</a></li>
    <li><a href="../issue-tracking.html" title="Issue Tracking"><span class="none"></span>Issue Tracking</a></li>
    <li><a href="../license.html" title="Project License"><span class="none"></span>Project License</a></li>
    <li><a href="../source-repository.html" title="Source Repository"><span class="none"></span>Source Repository</a></li>
    <li><a href="../project-summary.html" title="Project Summary"><span class="none"></span>Project Summary</a></li>
   <li class="nav-header"><img class="imageLink" src="../img/glyphicons/layers.png" alt="Project Reports" border="0"/> Project Reports</li>
    <li><a href="../changes-report.html" title="Changes Report"><span class="none"></span>Changes Report</a></li>
    <li><a href="../jira-report.html" title="JIRA Report"><span class="none"></span>JIRA Report</a></li>
    <li><a href="../rat-report.html" title="RAT Report"><span class="none"></span>RAT Report</a></li>
  </ul>
          </nav>
          <div class="well sidebar-nav">
            <hr />
            <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" >

  
    <section>
<h2><a name="Architecture"></a>Architecture</h2>
      <section>
<h3><a name="Main_Components"></a>Main Components</h3>
        
<p>Log4j uses the classes shown in the diagram below.</p>
        <img src="../images/Log4jClasses.jpg" title="Log4j 2 Class Relationships" alt="Log4j 2 Class Relationships" />
        
<p>Applications using the Log4j 2 API will request a Logger with a specific name from the
          LogManager. The LogManager will locate the appropriate LoggerContext and then obtain the Logger from it.
          If the Logger must be created it will be associated with the LoggerConfig that contains either a) the
          same name as the Logger, b) the name of a parent package, or c) the root LoggerConfig. LoggerConfig
          objects are created from Logger declarations in the configuration. The LoggerConfig is associated with
          the Appenders that actually deliver the LogEvents.
        </p>
        <section>
<h4><a name="Logger_Hierarchy"></a>Logger Hierarchy</h4>
        
<p>The first and foremost advantage of any logging API over plain
          System.out.println
          resides in its ability to disable
          certain log statements while allowing others to print unhindered. This
          capability assumes that the logging space, that is, the space of all
          possible logging statements, is categorized according to some
          developer-chosen criteria.
        </p>
        
<p>In Log4j 1.x the Logger Hierarchy was maintained through a relationship between Loggers.
          In Log4j 2 this relationship no longer exists. Instead, the hierarchy is maintained
          in the relationship between LoggerConfig objects.
        </p>

        
<p>Loggers and LoggerConfigs are named entities. Logger names are case-sensitive and
          they follow the hierarchical naming rule:
        </p>

        
<div class="well">
          
<dl>
            
<dt>Named Hierarchy</dt>
            
<dd>
              A LoggerConfig is said to be an <i>ancestor</i> of another LoggerConfig if its name followed by a dot
              is a prefix of the <i>descendant</i> logger name. A LoggerConfig is said to be a <i>parent</i> of a
              <i>child</i> LoggerConfig if there are no ancestors between itself and the descendant LoggerConfig.
            </dd>
          </dl>
        </div>

        
<p>For example, the LoggerConfig named
          &quot;com.foo&quot;
          is a parent
          of the LoggerConfig named&quot;com.foo.Bar&quot;. Similarly,
          &quot;java&quot;
          is a parent of
          &quot;java.util&quot;
          and an
          ancestor of &quot;java.util.Vector&quot;. This naming scheme
          should be familiar to most developers.
        </p>

        
<p>The root LoggerConfig resides at the top of the LoggerConfig hierarchy. It
          is exceptional in that it always exists and it is part of every hierarchy. A Logger
          that is directly linked to the root LoggerConfig can be obtained as follows:
        </p>
          
<div>
<pre class="prettyprint">Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);</pre></div>
        
<p>
          Alternatively, and more simply:
        </p>
          
<div>
<pre class="prettyprint">Logger logger = LogManager.getRootLogger();</pre></div>
        
<p>
          All other Loggers can be retrieved using the
          <a href="../log4j-api/apidocs/org/apache/logging/log4j/LogManager.html#getLoggerjava.lang.String">
            LogManager.getLogger
          </a>
          static method by passing the name of the desired Logger. Further information on the Logging
          API can be found in the <a href="../log4j-api/api.html">Log4j 2 API</a>.
        </p>
        </section><section>
<h4><a name="LoggerContext"></a>LoggerContext</h4>
        
<p>
          The
          <a href="../log4j-core/apidocs/org/apache/logging/log4j/core/LoggerContext.html">LoggerContext</a>
          acts as the anchor point for the Logging system. However, it is possible to have multiple active
          LoggerContexts in an application depending on the circumstances.
          More details on the LoggerContext are in the <a href="logsep.html">Log Separation</a> section.
        </p>
        </section><section>
<h4><a name="Configuration"></a>Configuration</h4>
        
<p>Every LoggerContext has an active
          <a href="../log4j-core/apidocs/org/apache/logging/log4j/core/config/Configuration.html">
            Configuration</a>.
          The Configuration contains all the Appenders,
          context-wide Filters, LoggerConfigs and contains the reference to the StrSubstitutor. During
          reconfiguration two Configuration objects will exist. Once all Loggers have been redirected to
          the new Configuration, the old Configuration will be stopped and discarded.
        </p>
        </section><section>
<h4><a name="Logger"></a>Logger</h4>
        
<p>As stated previously, Loggers are created by calling
          <a href="../log4j-api/apidocs/org/apache/logging/log4j/LogManager.html#getLoggerjava.lang.String">LogManager.getLogger</a>.
          The Logger itself performs no direct actions. It simply has a name and is associated with a LoggerConfig.
          It extends
          <a href="../log4j-api/apidocs/org/apache/logging/log4j/spi/AbstractLogger.html">
            AbstractLogger
          </a>
          and implements the required methods. As the configuration is modified Loggers may become associated
          with a different LoggerConfig, thus causing their behavior to be modified.
        </p>
        <section>
<h5><a name="Retrieving_Loggers"></a>Retrieving Loggers</h5>
        
<p>
          Calling the LogManager.getLogger method with the same name will always return a reference to the
          exact same Logger object.
        </p>

        
<p>For example, in
        </p>

<div>
<pre class="prettyprint">
Logger x = LogManager.getLogger(&quot;wombat&quot;);
Logger y = LogManager.getLogger(&quot;wombat&quot;);
</pre></div>
        
<p>
          x and y refer to <i>exactly</i> the same Logger object.
        </p>

        
<p>Configuration of the log4j environment is typically done at
          application initialization. The preferred way is by reading a
          configuration file. This is discussed in <a href="configuration.html">Configuration</a>.
        </p>

        
<p>Log4j makes it easy to name Loggers by <i>software component</i>. This can be accomplished
          by instantiating a Logger in each class, with the logger name equal to the fully
          qualified name of the class. This is a useful and straightforward
          method of defining loggers. As the log output bears the name of the
          generating Logger, this naming strategy makes it easy to identify
          the origin of a log message. However, this is only one possible,
          albeit common, strategy for naming loggers. Log4j does not restrict
          the possible set of loggers. The developer is free to name the
          loggers as desired.
        </p>

        
<p>Since naming Loggers after their owning class is such a common idiom, the convenience method
          LogManager.getLogger() is provided to automatically use the calling class's fully
          qualified class name as the Logger name.
        </p>

        
<p>Nevertheless, naming loggers after the class where they are
          located seems to be the best strategy known so far.
        </p>
        </section></section><section>
<h4><a name="LoggerConfig"></a>LoggerConfig</h4>
        
<p>
          <a href="../log4j-core/apidocs/org/apache/logging/log4j/core/config/LoggerConfig.html">LoggerConfig</a>
          objects are created when Loggers are declared in the logging configuration.
          The LoggerConfig contains a set of Filters that must allow the LogEvent to pass before it will be
          passed to any Appenders. It contains references to the set of Appenders that should be used to
          process the event.
        </p>
        <section>
<h5><a name="Log_Levels"></a>Log Levels</h5>
        
<p>LoggerConfigs will be assigned a Log
          <a href="../log4j-api/apidocs/org/apache/logging/log4j/Level.html">Level</a>. The set of built-in
          levels includes TRACE, DEBUG, INFO, WARN, ERROR, and FATAL. Log4j 2 also supports
          <a href="customloglevels.html">custom log levels</a>.
          Another mechanism for getting more granularity is to use
          <a href="../log4j-api/api.html#Markers">Markers</a> instead.
        </p>
        
<p>
          <a class="externalLink" href="http://logging.apache.org/log4j/1.2/manual.html">Log4j 1.x</a>
          and
          <a class="externalLink" href="http://logback.qos.ch/manual/architecture.html#effectiveLevel">Logback</a>
          both have the concept of &quot;Level Inheritance&quot;. In Log4j 2, Loggers and LoggerConfigs are two different
          objects so this concept is implemented differently. Each Logger references the
          appropriate LoggerConfig which in turn can reference its parent, thus achieving the same effect.
        </p>
        
<p>Below are five tables with various assigned level values and the resulting levels that
          will be associated with each Logger. Note that in all these cases if the root LoggerConfig
          is not configured a default Level will be assigned to it.
        </p>

        
<table border="0" class="table table-striped" style="width: 40%"><caption align="bottom">Example 1</caption>
          
          
<tr class="a">
            
<th>Logger Name</th>
            
<th>Assigned LoggerConfig</th>
            
<th>LoggerConfig Level</th>
            
<th>Logger Level</th>
          </tr>
          
<tr class="b">
            
<td>root</td>
            
<td>root</td>
            
<td>DEBUG</td>
            
<td>DEBUG</td>
          </tr>
          
<tr class="a">
            
<td>X</td>
            
<td>root</td>
            
<td>DEBUG</td>
            
<td>DEBUG</td>
          </tr>
          
<tr class="b">
            
<td>X.Y</td>
            
<td>root</td>
            
<td>DEBUG</td>
            
<td>DEBUG</td>
          </tr>
          
<tr class="a">
            
<td>X.Y.Z</td>
            
<td>root</td>
            
<td>DEBUG</td>
            
<td>DEBUG</td>
          </tr>
        </table>

        
<p>In example 1 above, only the root logger is configured and has a Log Level. All the other
          Loggers reference the root LoggerConfig and use its Level.
        </p>

        
<table border="0" class="table table-striped" style="width: 40%"><caption align="bottom">Example 2</caption>
          
          
<tr class="a">
            
<th>Logger Name</th>
            
<th>Assigned LoggerConfig</th>
            
<th>LoggerConfig Level</th>
            
<th>Level</th>
          </tr>
          
<tr class="b">
            
<td>root</td>
            
<td>root</td>
            
<td>DEBUG</td>
            
<td>DEBUG</td>
          </tr>
          
<tr class="a">
            
<td>X</td>
            
<td>X</td>
            
<td>ERROR</td>
            
<td>ERROR</td>
          </tr>
          
<tr class="b">
            
<td>X.Y</td>
            
<td>X.Y</td>
            
<td>INFO</td>
            
<td>INFO</td>
          </tr>
          
<tr class="a">
            
<td>X.Y.Z</td>
            
<td>X.Y.Z</td>
            
<td>WARN</td>
            
<td>WARN</td>
          </tr>
        </table>

        
<p>In example 2, all loggers have a configured LoggerConfig and obtain their Level
          from it.
        </p>

        
<table border="0" class="table table-striped" style="width: 40%"><caption align="bottom">Example 3</caption>
          
          
<tr class="a">
            
<th>Logger Name</th>
            
<th>Assigned LoggerConfig</th>
            
<th>LoggerConfig Level</th>
            
<th>Level</th>
          </tr>
          
<tr class="b">
            
<td>root</td>
            
<td>root</td>
            
<td>DEBUG</td>
            
<td>DEBUG</td>
          </tr>
          
<tr class="a">
            
<td>X</td>
            
<td>X</td>
            
<td>ERROR</td>
            
<td>ERROR</td>
          </tr>
          
<tr class="b">
            
<td>X.Y</td>
            
<td>X</td>
            
<td>ERROR</td>
            
<td>ERROR</td>
          </tr>
          
<tr class="a">
            
<td>X.Y.Z</td>
            
<td>X.Y.Z</td>
            
<td>WARN</td>
            
<td>WARN</td>
          </tr>
        </table>

        
<p>In example 3, the loggersroot,
          X
          and
          X.Y.Z
          each have a configured LoggerConfig with the same name. The Logger
          X.Y
          does not have a configured LoggerConfig with a matching name so uses
          the configuration of LoggerConfig
          X
          since that is the LoggerConfig whose
          name has the longest match to the start of the Logger's name.
        </p>

        
<table border="0" class="table table-striped" style="width: 40%"><caption align="bottom">Example 4</caption>
          
          
<tr class="a">
            
<th>Logger Name</th>
            
<th>Assigned LoggerConfig</th>
            
<th>LoggerConfig Level</th>
            
<th>level</th>
          </tr>
          
<tr class="b">
            
<td>root</td>
            
<td>root</td>
            
<td>DEBUG</td>
            
<td>DEBUG</td>
          </tr>
          
<tr class="a">
            
<td>X</td>
            
<td>X</td>
            
<td>ERROR</td>
            
<td>ERROR</td>
          </tr>
          
<tr class="b">
            
<td>X.Y</td>
            
<td>X</td>
            
<td>ERROR</td>
            
<td>ERROR</td>
          </tr>
          
<tr class="a">
            
<td>X.Y.Z</td>
            
<td>X</td>
            
<td>ERROR</td>
            
<td>ERROR</td>
          </tr>
        </table>

        
<p>In example 4, the loggers
          root
          and
          X
          each have a Configured
          LoggerConfig with the same name. The loggers
          X.Y
          and
          X.Y.Z
          do not have configured LoggerConfigs and so get their Level from the LoggerConfig
          assigned to them,X, since it is the LoggerConfig whose name has the
          longest match to the start of the Logger's name.
        </p>

        
<table border="0" class="table table-striped" style="width: 40%"><caption align="bottom">Example 5</caption>
          
          
<tr class="a">
            
<th>Logger Name</th>
            
<th>Assigned LoggerConfig</th>
            
<th>LoggerConfig Level</th>
            
<th>level</th>
          </tr>
          
<tr class="b">
            
<td>root</td>
            
<td>root</td>
            
<td>DEBUG</td>
            
<td>DEBUG</td>
          </tr>
          
<tr class="a">
            
<td>X</td>
            
<td>X</td>
            
<td>ERROR</td>
            
<td>ERROR</td>
          </tr>
          
<tr class="b">
            
<td>X.Y</td>
            
<td>X.Y</td>
            
<td>INFO</td>
            
<td>INFO</td>
          </tr>
          
<tr class="a">
            
<td>X.YZ</td>
            
<td>X</td>
            
<td>ERROR</td>
            
<td>ERROR</td>
          </tr>
        </table>

        
<p>In example 5, the loggersroot.X, and
          X.Y
          each
          have a Configured LoggerConfig with the same name. The logger
          X.YZ
          does not have configured LoggerConfig and so gets its Level from the LoggerConfig
          assigned to it,X, since it is the LoggerConfig whose name has the
          longest match to the start of the Logger's name. It is not associated with LoggerConfig
          X.Y
          since tokens after periods must match exactly.
        </p>
        
<table border="0" class="table table-striped" style="width: 40%"><caption align="bottom">Example 6</caption>
          
          
<tr class="a">
            
<th>Logger Name</th>
            
<th>Assigned LoggerConfig</th>
            
<th>LoggerConfig Level</th>
            
<th>Level</th>
          </tr>
          
<tr class="b">
            
<td>root</td>
            
<td>root</td>
            
<td>DEBUG</td>
            
<td>DEBUG</td>
          </tr>
          
<tr class="a">
            
<td>X</td>
            
<td>X</td>
            
<td>ERROR</td>
            
<td>ERROR</td>
          </tr>
          
<tr class="b">
            
<td>X.Y</td>
            
<td>X.Y</td>
            
<td></td>
            
<td>ERROR</td>
          </tr>
          
<tr class="a">
            
<td>X.Y.Z</td>
            
<td>X.Y</td>
            
<td></td>
            
<td>ERROR</td>
          </tr>
        </table>

        
<p>In example 6, LoggerConfig X.Y it has no configured level so it inherits its level
          from LoggerConfig X. Logger X.Y.Z uses LoggerConfig X.Y since it doesn't have a LoggerConfig with
          a name that exactly matches. It too inherits its logging level from LoggerConfig X.
        </p>

        
<p>The table below illustrates how Level filtering works. In the table, the vertical
          header shows the Level of the LogEvent, while the horizontal header shows the Level associated
          with the appropriate LoggerConfig. The intersection identifies whether the LogEvent would
          be allowed to pass for further processing (Yes) or discarded (No).
        </p>
        
<table border="0" class="table table-striped">
          
<tr class="a">
            
<th>Event Level</th>
            
<th style="text-align: center" colspan="6">LoggerConfig Level</th>
          </tr>
          
<tr class="b">
            
<th>&#160;</th>
            
<th>TRACE</th>
            
<th>DEBUG</th>
            
<th>INFO</th>
            
<th>WARN</th>
            
<th>ERROR</th>
            
<th>FATAL</th>
            
<th>OFF</th>
          </tr>
          
<tr class="a">
            
<th>ALL</th>
            
<td class="big-red">YES</td>
            
<td class="big-red">YES</td>
            
<td class="big-red">YES</td>
            
<td class="big-red">YES</td>
            
<td class="big-red">YES</td>
            
<td class="big-red">YES</td>
            
<td class="big-red">NO</td>
          </tr>
          
<tr class="b">
            
<th>TRACE</th>
            
<td class="big-green">YES</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
          </tr>
          
<tr class="a">
            
<th>DEBUG</th>
            
<td class="big-green">YES</td>
            
<td class="big-green">YES</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
          </tr>
          
<tr class="b">
            
<th>INFO</th>
            
<td class="big-green">YES</td>
            
<td class="big-green">YES</td>
            
<td class="big-green">YES</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
          </tr>
          
<tr class="a">
            
<th>WARN</th>
            
<td class="big-green">YES</td>
            
<td class="big-green">YES</td>
            
<td class="big-green">YES</td>
            
<td class="big-green">YES</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
          </tr>
          
<tr class="b">
            
<th>ERROR</th>
            
<td class="big-green">YES</td>
            
<td class="big-green">YES</td>
            
<td class="big-green">YES</td>
            
<td class="big-green">YES</td>
            
<td class="big-green">YES</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
          </tr>
          
<tr class="a">
            
<th>FATAL</th>
            
<td class="big-green">YES</td>
            
<td class="big-green">YES</td>
            
<td class="big-green">YES</td>
            
<td class="big-green">YES</td>
            
<td class="big-green">YES</td>
            
<td class="big-green">YES</td>
            
<td class="big-red">NO</td>
          </tr>
          
<tr class="b">
            
<th>OFF</th>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
            
<td class="big-red">NO</td>
          </tr>
        </table>

        </section></section><section>
<h4><a name="Filter"></a>Filter</h4>
        
<p>In addition to the automatic log Level filtering that takes place as described in the previous
          section, Log4j provides
          <a href="../log4j-core/apidocs/org/apache/logging/log4j/core/Filter.html">Filter</a>s that can
          be applied before control is passed to any LoggerConfig, after control is passed to a LoggerConfig
          but before calling any Appenders, after control is passed to a LoggerConfig but before calling a
          specific Appender, and on each Appender. In a manner very similar to firewall filters,
          each Filter can return one of three results, Accept, Deny or Neutral.
          A response of Accept means that no other Filters should be called and the event should progress.
          A response of Deny means the event should be immediately ignored and control should be returned
          to the caller. A response of Neutral indicates the event should be passed to other Filters. If
          there are no other Filters the event will be processed.
        </p>
        
<p>Although an event may be accepted by a Filter the event still might not be logged. This can happen
          when the event is accepted by the pre-LoggerConfig Filter but is then denied by a LoggerConfig
          filter or is denied by all Appenders.
        </p>

        </section><section>
<h4><a name="Appender"></a>Appender</h4>

        
<p>The ability to selectively enable or disable logging requests based
          on their logger is only part of the picture. Log4j allows logging
          requests to print to multiple destinations. In log4j speak, an output
          destination is called an
          <a href="../log4j-core/apidocs/org/apache/logging/log4j/core/Appender.html">Appender</a>.
          Currently, appenders exist for the console, files, remote socket servers, Apache Flume,
          JMS, remote UNIX Syslog daemons, and various database APIs. See the section on
          <a href="appenders.html">Appenders</a> for more details on the various types available.
          More than one Appender can be attached to a Logger.
        </p>
        
<p>An Appender can be added to a Logger by calling the
          <a href="../log4j-core/apidocs/org/apache/logging/log4j/core/config/Configuration.html#addLoggerAppenderorg.apache.logging.log4j.core.Logger20org.apache.logging.log4j.core.Appender">addLoggerAppender</a>
          method of the current Configuration. If a LoggerConfig matching the name of the Logger does
          not exist, one will be created, the Appender will be attached to it and then all Loggers
          will be notified to update their LoggerConfig references.
        </p>
        
<p><b>Each enabled logging request for a given logger will be forwarded to all the appenders in
          that Logger's LoggerConfig as well as the Appenders of the LoggerConfig's parents.</b> In
          other words, Appenders are inherited additively from the LoggerConfig hierarchy. For example,
          if a console appender is added to the root logger, then all enabled logging requests will at
          least print on the console. If in addition a file appender is added to a LoggerConfig, say
          <i>C</i>, then enabled logging requests for <i>C</i> and <i>C</i>'s children will print
          in a file <i>and</i> on the console. It is possible to override this default behavior so that
          Appender accumulation is no longer additive by setting additivity=&quot;false&quot; on the
          Logger declaration in the configuration file.
        </p>
        
<p>The rules governing appender additivity are summarized below.</p>

        
<div class="well">
          
<dl>
	        
<dt><b>Appender Additivity</b></dt>
	          
<dd>
                
<p>
                  The output of a log statement of Logger <i>L</i> will go to all the Appenders in the LoggerConfig
                  associated with <i>L</i> and the ancestors of that LoggerConfig. This is the meaning of the term
                  &quot;appender additivity&quot;.
                </p>
	            
<p>
                  However, if an ancestor of the LoggerConfig associated with Logger <i>L</i>, say <i>P</i>, has the
                  additivity flag set to false, then <i>L</i>'s output will be directed to all the
                  appenders in <i>L</i>'s LoggerConfig and it's ancestors up to and including <i>P</i> but not the
                  Appenders in any of the ancestors of <i>P</i>.
                </p>
	            
<p>Loggers have their additivity flag set to true by default.</p>
            </dd>
          </dl>
        </div>

        
<p>The table below shows an example:</p>

        
<table border="0" class="table table-striped">
          
<tr class="a">
            
<th>Logger<br />Name </th>
            
<th>Added<br />Appenders</th>
            
<th>Additivity<br />Flag</th>
            
<th>Output Targets</th>
            
<th>Comment</th>
          </tr>
          
<tr class="b">
            
<td>root</td>
            
<td>A1</td>
            
<td>not applicable</td>
            
<td>A1</td>
            
<td>The root logger has no parent so additivity does not apply to it.</td>
          </tr>
          
<tr class="a">
            
<td>x</td>
            
<td>A-x1, A-x2</td>
            
<td>true </td>
            
<td>A1, A-x1, A-x2</td>
            
<td>Appenders of &quot;x&quot; and root.</td>
          </tr>
          
<tr class="b">
            
<td>x.y</td>
            
<td>none</td>
            
<td>true </td>
            
<td>A1, A-x1, A-x2</td>
            
<td>Appenders of &quot;x&quot; and root. It would not be typical to configure a Logger with no Appenders.</td>
          </tr>
          
<tr class="a">
            
<td>x.y.z</td>
            
<td>A-xyz1</td>
            
<td>true </td>
            
<td>A1, A-x1, A-x2, A-xyz1</td>
            
<td>Appenders in &quot;x.y.z&quot;, &quot;x&quot; and root.</td>
          </tr>
          
<tr class="b">
            
<td>security</td>
            
<td>A-sec</td>
            
<td><font color="blue">false</font></td>
            
<td>A-sec</td>
            
<td>No appender accumulation since the additivity flag is set to false.</td>
          </tr>
          
<tr class="a">
            
<td>security.access</td>
            
<td>none</td>
            
<td>true</td>
            
<td>A-sec</td>
            
<td>Only appenders of &quot;security&quot; because the additivity flag in &quot;security&quot; is
              set to false.
            </td>
          </tr>
        </table>

        </section><section>
<h4><a name="Layout"></a>Layout</h4>
        
<p>More often than not, users wish to customize not only the output destination but also the output format.
          This is accomplished by associating a
          <a href="../log4j-core/apidocs/org/apache/logging/log4j/core/Layout.html">Layout</a>
          with an Appender. The Layout is responsible for formatting the LogEvent according to the user's
          wishes, whereas an appender takes care of sending the formatted output to its destination.
          The <a href="../log4j-core/apidocs/org/apache/logging/log4j/core/layout/PatternLayout.html">PatternLayout</a>,
          part of the standard log4j distribution, lets the user specify the output
          format according to conversion patterns similar to the C language printf function.
        </p>

        
<p>For example, the PatternLayout with the conversion pattern &quot;%r [%t]
          %-5p %c - %m%n&quot; will output something akin to:
        </p>
          
<div>
<pre>176 [main] INFO  org.foo.Bar - Located nearest gas station.</pre></div>

        
<p>The first field is the number of milliseconds elapsed since the
          start of the program.  The second field is the thread making the log
          request.  The third field is the level of the log statement. The
          fourth field is the name of the logger associated with the log
          request. The text after the '-' is the message of the statement.
        </p>

        
<p>Log4j comes with many different <a href="layouts.html">Layouts</a> for various use cases such as
          JSON, XML, HTML, and Syslog (including the new RFC 5424 version). Other appenders such as the
          database connectors fill in specified fields instead of a particular textual layout.
        </p>

        
<p>Just as importantly, log4j will render the content of the log
          message according to user specified criteria. For example, if you
          frequently need to log Oranges, an object type used in
          your current project, then you can create an OrangeMessage that accepts an
          Orange instance and pass that to Log4j so that the Orange object can
          be formatted into an appropriate byte array when required.
        </p>

        </section><section>
<h4><a name="StrSubstitutor_and_StrLookup"></a>StrSubstitutor and StrLookup</h4>
        
<p>The
          <a href="../log4j-core/apidocs/org/apache/logging/log4j/core/lookup/StrSubstitutor.html">
            StrSubstitutor
          </a>
          class and
          <a href="../log4j-core/apidocs/org/apache/logging/log4j/core/lookup/StrLookup.html">StrLookup</a>
          interface were borrowed from
          <a class="externalLink" href="https://commons.apache.org/proper/commons-lang/">Apache Commons Lang</a> and then modified
          to support evaluating LogEvents. In addition the
          <a href="../log4j-core/apidocs/org/apache/logging/log4j/core/lookup/Interpolator.html">Interpolator</a>
          class was borrowed from Apache Commons Configuration to allow the StrSubstitutor to evaluate variables
          that from multiple StrLookups. It too was modified to support evaluating LogEvents. Together these
          provide a mechanism to allow the configuration to reference variables coming from System Properties,
          the configuration file, the ThreadContext Map, StructuredData in the LogEvent. The variables can
          either be resolved when the configuration is processed or as each event is processed, if the component
          is capable of handling it. See
          <a href="lookups.html">Lookups</a>
          for more information.
        </p>

      </section></section>

    </section>
  

        </main>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
<p align="center">Copyright &copy; 1999-2020 <a class="external" href="http://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>
  </body>
</html>
