<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.9.1 from src/site/xdoc/manual/customloglevels.xml.vm at 2020-04-25
 | 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="Remko Popma" />
    <title>Log4j &#x2013; Custom Log Levels</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-04-25<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 2.13.2</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><a href="../manual/architecture.html" title="Architecture"><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 class="active"><a href="#"><span class="icon-chevron-down"></span>Custom Log Levels</a>
     <ul class="nav nav-list">
      <li><a href="../manual/customloglevels.html#DefiningLevelsInCode" title="In Code"><span class="none"></span>In Code</a></li>
      <li><a href="../manual/customloglevels.html#DefiningLevelsInConfiguration" title="In Configuration"><span class="none"></span>In Configuration</a></li>
      <li><a href="../manual/customloglevels.html#AddingOrReplacingLevels" title="Adding or Replacing Levels"><span class="none"></span>Adding or Replacing Levels</a></li>
      <li><a href="../manual/customloglevels.html#CustomLoggers" title="Custom Loggers"><span class="none"></span>Custom Loggers</a></li>
      <li><a href="../manual/customloglevels.html#ExampleUsage" title="Custom Logger Example"><span class="none"></span>Custom Logger Example</a></li>
      <li><a href="../manual/customloglevels.html#CodeGen" title="Code Generation Tool"><span class="none"></span>Code Generation Tool</a></li>
     </ul></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" >

    
      <a name="top"></a>
      <section>
<h2><a name="Custom_Log_Levels"></a>Custom Log Levels</h2>
        <a name="DefiningLevelsInCode"></a>
        <section>
<h3><a name="Defining_Custom_Log_Levels_in_Code"></a>Defining Custom Log Levels in Code</h3>
        
<p>
          Log4J 2 supports custom log levels. Custom log levels can be defined in code
          or in configuration. To define a custom log level in code, use the
          Level.forName() method. This method creates a new
          level for the specified name. After a log level is defined you can log
          messages at this level by calling the Logger.log() method and passing
          the custom log level:
        </p>
            
<div>
<pre class="prettyprint">
// This creates the &quot;VERBOSE&quot; level if it does not exist yet.
final Level VERBOSE = Level.forName(&quot;VERBOSE&quot;, 550);

final Logger logger = LogManager.getLogger();
logger.log(VERBOSE, &quot;a verbose message&quot;); // use the custom VERBOSE level

// Create and use a new custom level &quot;DIAG&quot;.
logger.log(Level.forName(&quot;DIAG&quot;, 350), &quot;a diagnostic message&quot;);

// Use (don't create) the &quot;DIAG&quot; custom level.
// Only do this *after* the custom level is created!
logger.log(Level.getLevel(&quot;DIAG&quot;), &quot;another diagnostic message&quot;);

// Using an undefined level results in an error: Level.getLevel() returns null,
// and logger.log(null, &quot;message&quot;) throws an exception.
logger.log(Level.getLevel(&quot;FORGOT_TO_DEFINE&quot;), &quot;some message&quot;); // throws exception!</pre></div>
        
<p>When defining a custom log level, the intLevel parameter (550 and 350 in the example above) determines
           where the custom level exists in relation to the standard levels built-in to Log4J 2.
           For reference, the table below shows the intLevel of the built-in log levels.
         </p>
         
<table border="0" class="table table-striped" style="width: 30%"><caption align="top">Standard log levels built-in to Log4J</caption>
          
          
<tr class="a">
            
<th>Standard Level</th>
            
<th>intLevel</th>
          </tr>
          
<tr class="b">
            
<td>OFF</td>
            
<td align="right">0</td>
          </tr>
          
<tr class="a">
            
<td>FATAL</td>
            
<td align="right">100</td>
          </tr>
          
<tr class="b">
            
<td>ERROR</td>
            
<td align="right">200</td>
          </tr>
          
<tr class="a">
            
<td>WARN</td>
            
<td align="right">300</td>
          </tr>
          
<tr class="b">
            
<td>INFO</td>
            
<td align="right">400</td>
          </tr>
          
<tr class="a">
            
<td>DEBUG</td>
            
<td align="right">500</td>
          </tr>
          
<tr class="b">
            
<td>TRACE</td>
            
<td align="right">600</td>
          </tr>
          
<tr class="a">
            
<td>ALL</td>
            
<td align="right">Integer.MAX_VALUE</td>
          </tr>
        </table>
        </section>
        <a name="DefiningLevelsInConfiguration"></a>
        <section>
<h3><a name="Defining_Custom_Log_Levels_in_Configuration"></a>Defining Custom Log Levels in Configuration</h3>
          
<p>
          Custom log levels can also be defined in configuration.
          This is convenient for using a custom level in a logger filter
          or an appender filter. Similar to defining log levels in code,
          a custom level must be defined first, before it can be used.
          If a logger or appender is configured with an undefined level,
          that logger or appender will be invalid and will not process any log events.
          </p>
          
<p>
            The <b>CustomLevel</b> configuration element creates a custom level.
            Internally it calls the same Level.forName() method discussed above.
          </p>
          
<table border="0" class="table table-striped"><caption align="top">CustomLevel Parameters</caption>
            
            
<tr class="a">
              
<th>Parameter Name</th>
              
<th>Type</th>
              
<th>Description</th>
            </tr>
            
<tr class="b">
              
<td>name</td>
              
<td>String</td>
              
<td>The name of the custom level. Note that level names are case sensitive.
                The convention is to use all upper-case names.</td>
            </tr>
            
<tr class="a">
              
<td>intLevel</td>
              
<td>integer</td>
              
<td>Determines where the custom level exists in relation to the
                standard levels built-in to Log4J 2 (see the table above).</td>
            </tr>
          </table>
          
<p>
          The following example shows a configuration that defines some custom
          log levels and uses a custom log level to filter log events sent to the console.
          </p>
          
<div>
<pre class="prettyprint linenums">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;Configuration status=&quot;WARN&quot;&gt;
  &lt;!-- Define custom levels before using them for filtering below. --&gt;
  &lt;CustomLevels&gt;
    &lt;CustomLevel name=&quot;DIAG&quot; intLevel=&quot;350&quot; /&gt;
    &lt;CustomLevel name=&quot;NOTICE&quot; intLevel=&quot;450&quot; /&gt;
    &lt;CustomLevel name=&quot;VERBOSE&quot; intLevel=&quot;550&quot; /&gt;
  &lt;/CustomLevels&gt;

  &lt;Appenders&gt;
    &lt;Console name=&quot;Console&quot; target=&quot;SYSTEM_OUT&quot;&gt;
      &lt;PatternLayout pattern=&quot;%d %-7level %logger{36} - %msg%n&quot;/&gt;
    &lt;/Console&gt;
    &lt;File name=&quot;MyFile&quot; fileName=&quot;logs/app.log&quot;&gt;
      &lt;PatternLayout pattern=&quot;%d %-7level %logger{36} - %msg%n&quot;/&gt;
    &lt;/File&gt;
  &lt;/Appenders&gt;
  &lt;Loggers&gt;
    &lt;Root level=&quot;trace&quot;&gt;
      &lt;!-- Only events at DIAG level or more specific are sent to the console. --&gt;
      &lt;AppenderRef ref=&quot;Console&quot; level=&quot;diag&quot; /&gt;
      &lt;AppenderRef ref=&quot;MyFile&quot; level=&quot;trace&quot; /&gt;
    &lt;/Root&gt;
  &lt;/Loggers&gt;
&lt;/Configuration&gt;</pre></div>
        </section>
          <a name="StandardLoggerInterface"></a>
          <section>
<h3><a name="Convenience_Methods_for_the_Built-in_Log_Levels"></a>Convenience Methods for the Built-in Log Levels</h3>
            
<p>
              The built-in log levels have a set of convenience methods on the Logger
              interface that makes them easier to use. For example, the Logger interface
              has 24 debug() methods that support the DEBUG level:
            </p>
            
<div>
<pre class="prettyprint">
// convenience methods for the built-in DEBUG level
debug(Marker, Message)
debug(Marker, Message, Throwable)
debug(Marker, Object)
debug(Marker, Object, Throwable)
debug(Marker, String)
debug(Marker, String, Object...)
debug(Marker, String, Throwable)
debug(Message)
debug(Message, Throwable)
debug(Object)
debug(Object, Throwable)
debug(String)
debug(String, Object...)
debug(String, Throwable)
// lambda support methods added in 2.4
debug(Marker, MessageSupplier)
debug(Marker, MessageSupplier, Throwable)
debug(Marker, String, Supplier&lt;?&gt;...)
debug(Marker, Supplier&lt;?&gt;)
debug(Marker, Supplier&lt;?&gt;, Throwable)
debug(MessageSupplier)
debug(MessageSupplier, Throwable)
debug(String, Supplier&lt;?&gt;...)
debug(Supplier&lt;?&gt;)
debug(Supplier&lt;?&gt;, Throwable)</pre></div>
            
<p>
              Similar methods exist for the other built-in levels.
              Custom levels, in contrast, need to pass in the log level as an extra parameter.
            </p>
            
<div>
<pre class="prettyprint">
// need to pass the custom level as a parameter
logger.log(VERBOSE, &quot;a verbose message&quot;);
logger.log(Level.forName(&quot;DIAG&quot;, 350), &quot;another message&quot;);</pre></div>
            
<p>It would be nice to have the same ease of use with custom levels,
               so that after declaring the custom VERBOSE/DIAG levels, we could
               use code like this:
            </p>
            
<div>
<pre class="prettyprint">
// nice to have: descriptive methods and no need to pass the level as a parameter
logger.verbose(&quot;a verbose message&quot;);
logger.diag(&quot;another message&quot;);
logger.diag(&quot;java 8 lambda expression: {}&quot;, () -&gt; someMethod());</pre></div>
            
<p>The standard Logger interface cannot provide convenience methods for
              custom levels, but the next few sections introduce a code generation tool
              to create loggers that aim to make custom levels as easy to use
              as built-in levels.</p>
          </section>
          <a name="AddingOrReplacingLevels"></a>
          <section>
<h3><a name="Adding_or_Replacing_Log_Levels"></a>Adding or Replacing Log Levels</h3>
            
<p>
              We assume that most users want to <i>add</i> custom level methods to the Logger interface,
               in addition to the existing trace(), debug(), info(), ... methods for the built-in log levels.
            </p>
            
<p>There is another use case, Domain Specific Language loggers, where we want to <i>replace</i>
               the existing trace(), debug(), info(), ... methods with all-custom methods.
            </p>
            
<p>
              For example, for medical devices we could have only critical(), warning(),
              and advisory() methods.
              Another example could be a game that has only defcon1(), defcon2(),
              and defcon3() levels.
            </p>
            
<p>
              If it were possible to hide existing log levels, users could customize the
              Logger interface to match their requirements. Some people may not want to
              have a FATAL or a TRACE level, for example. They would like to be able to
              create a custom Logger that only has debug(), info(), warn() and error() methods.
            </p>
          </section>
          <a name="CustomLoggers"></a>
          <section>
<h3><a name="Generating_Source_Code_for_a_Custom_Logger_Wrapper"></a>Generating Source Code for a Custom Logger Wrapper</h3>
            
<p>
              Common Log4J usage is to get an instance of the Logger interface from the
              LogManager and call the methods on this interface.
              However, the custom log Levels are not known in advance, so Log4J cannot provide
              an interface with convenience methods for these custom log Levels.
            </p>
            
<p>
              To solve this, Log4J ships with a tool that generates source code for a
              Logger wrapper. The generated wrapper class has convenience methods for each
              custom log level, making custom levels just as easy to use as the built-in levels.
            </p>
            
<p>
              There are two flavors of wrappers: ones that <i><b>extend</b></i> the Logger
              API (adding methods to the built-in levels) and ones that <i><b>customize</b></i>
              the Logger API (replacing the built-in methods).
            </p>
            
<p>When generating the source code for a wrapper class, you need to specify:</p>
            
<ul>
              
<li>the fully qualified name of the class to generate
              </li>
              
<li>the list of custom levels to support and their intLevel relative strength
              </li>
              
<li>whether to extend Logger (and keep the existing built-in methods)
                or have only methods for the custom log levels
              </li>
            </ul>
            
<p>You would then include the generated source code in the project
              where you want to use custom log levels.</p>
          </section>
          <a name="ExampleUsage"></a>
          <section>
<h3><a name="Example_Usage_of_a_Generated_Logger_Wrapper"></a>Example Usage of a Generated Logger Wrapper</h3>
            
<p>
              Here is an example of how one would use a generated logger wrapper with
              custom levels DIAG, NOTICE and VERBOSE:
            </p>
            
<div>
<pre class="prettyprint linenums">
// ExtLogger is a generated logger wrapper
import com.mycompany.myproject.ExtLogger;

public class MyService {
    // instead of Logger logger = LogManager.getLogger(MyService.class):
    private static final ExtLogger logger = ExtLogger.create(MyService.class);

    public void demoExtendedLogger() {
        // ...
        logger.trace(&quot;the built-in TRACE level&quot;);
        logger.verbose(&quot;a custom level: a VERBOSE message&quot;);
        logger.debug(&quot;the built-in DEBUG level&quot;);
        logger.notice(&quot;a custom level: a NOTICE message&quot;);
        logger.info(&quot;the built-in INFO level&quot;);
        logger.diag(&quot;a custom level: a DIAG message&quot;);
        logger.warn(&quot;the built-in WARN level&quot;);
        logger.error(&quot;the built-in ERROR level&quot;);
        logger.fatal(&quot;the built-in FATAL level&quot;);
        logger.notice(&quot;java 8 lambda expression only executed if NOTICE is enabled: {}&quot;, () -&gt; someMethod());
        // ...
    }
    ...
}</pre></div>
          </section>
          <a name="CodeGen"></a>
          <section>
<h3><a name="Generating_Extended_Loggers"></a>Generating Extended Loggers</h3>
            
<p>
              Use the following command to generate a logger wrapper that adds methods to the built-in ones:
            </p>
            
<div>
<pre class="prettyprint">
java -cp log4j-core-2.13.2.jar org.apache.logging.log4j.core.tools.ExtendedLoggerGenerator \
        com.mycomp.ExtLogger DIAG=350 NOTICE=450 VERBOSE=550 &gt; com/mycomp/ExtLogger.java</pre></div>
            
<p>
              This will generate source code for a logger wrapper that has the convenience methods
              for the built-in levels <i>as well as</i> the specified custom levels. The tool prints the
              generated source code to the console.
              By appending &quot; &gt; <i>filename</i>&quot; the output can be redirected to a file.
            </p>
<p>
              NOTE: Prior to log4j-2.9, this tool was an inner class Generate$ExtendedLogger.<br />
               Under the bash shell on Unix/Mac/Linux the dollar character $ needs to be escaped, so the class name should
               be between single quotes 'org.apache.logging.log4j.core.tools.Generate$ExtendedLogger&#x2019;.
            </p>
          </section>
          <section>
<h3><a name="Generating_Custom_Loggers"></a>Generating Custom Loggers</h3>
            
<p>
              Use the following command to generate a logger wrapper that hides the built-in levels and has only custom levels:
            </p>
            
<div>
<pre class="prettyprint">
java -cp log4j-core-2.13.2.jar org.apache.logging.log4j.core.tools.CustomLoggerGenerator \
        com.mycomp.MyLogger DEFCON1=350 DEFCON2=450 DEFCON3=550 &gt; com/mycomp/MyLogger.java</pre></div>
            
<p>
              This will generate source code for a logger wrapper that <i>only</i> has convenience
              methods for the specified custom levels, <i>not</i> for the built-in levels.
              The tool prints the generated source code to the console.
              By appending &quot; &gt; <i>filename</i>&quot; the output can be redirected to a file.
            </p>
<p>
              NOTE: Prior to log4j-2.9, this tool was an inner class Generate$ExtendedLogger.<br />
               Under the bash shell on Unix/Mac/Linux the dollar character $ needs to be escaped, so the class name should
               be between single quotes 'org.apache.logging.log4j.core.tools.Generate$CustomLogger&#x2019;.
            </p>
          </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>
