<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.6) on Sun May 10 13:11:23 MST 2020 -->
<title>Index (Apache Log4j JDK Platform Logging Adapter 2.13.3 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2020-05-10">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="Index (Apache Log4j JDK Platform Logging Adapter 2.13.3 API)";
        }
    }
    catch(err) {
    }
//-->
var pathtoroot = "./";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="org/apache/logging/log4j/jpl/package-summary.html">Package</a></li>
<li>Class</li>
<li>Use</li>
<li><a href="org/apache/logging/log4j/jpl/package-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li class="navBarCell1Rev">Index</li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<main role="main">
<div class="contentContainer"><a href="#I:G">G</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:N">N</a>&nbsp;<a href="#I:O">O</a>&nbsp;<br><a href="allclasses-index.html">All&nbsp;Classes</a>&nbsp;<a href="allpackages-index.html">All&nbsp;Packages</a><a id="I:G">
<!--   -->
</a>
<h2 class="title">G</h2>
<dl>
<dt><span class="memberNameLink"><a href="org/apache/logging/log4j/jpl/Log4jSystemLoggerAdapter.html#getContext()">getContext()</a></span> - Method in class org.apache.logging.log4j.jpl.<a href="org/apache/logging/log4j/jpl/Log4jSystemLoggerAdapter.html" title="class in org.apache.logging.log4j.jpl">Log4jSystemLoggerAdapter</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="org/apache/logging/log4j/jpl/Log4jSystemLoggerFinder.html#getLogger(java.lang.String,java.lang.Module)">getLogger(String, Module)</a></span> - Method in class org.apache.logging.log4j.jpl.<a href="org/apache/logging/log4j/jpl/Log4jSystemLoggerFinder.html" title="class in org.apache.logging.log4j.jpl">Log4jSystemLoggerFinder</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html#getName()">getName()</a></span> - Method in class org.apache.logging.log4j.jpl.<a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html" title="class in org.apache.logging.log4j.jpl">Log4jSystemLogger</a></dt>
<dd>&nbsp;</dd>
</dl>
<a id="I:I">
<!--   -->
</a>
<h2 class="title">I</h2>
<dl>
<dt><span class="memberNameLink"><a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html#isLoggable(java.lang.System.Logger.Level)">isLoggable(System.Logger.Level)</a></span> - Method in class org.apache.logging.log4j.jpl.<a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html" title="class in org.apache.logging.log4j.jpl">Log4jSystemLogger</a></dt>
<dd>&nbsp;</dd>
</dl>
<a id="I:L">
<!--   -->
</a>
<h2 class="title">L</h2>
<dl>
<dt><span class="memberNameLink"><a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html#log(java.lang.System.Logger.Level,java.lang.Object)">log(System.Logger.Level, Object)</a></span> - Method in class org.apache.logging.log4j.jpl.<a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html" title="class in org.apache.logging.log4j.jpl">Log4jSystemLogger</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html#log(java.lang.System.Logger.Level,java.lang.String)">log(System.Logger.Level, String)</a></span> - Method in class org.apache.logging.log4j.jpl.<a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html" title="class in org.apache.logging.log4j.jpl">Log4jSystemLogger</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html#log(java.lang.System.Logger.Level,java.lang.String,java.lang.Object...)">log(System.Logger.Level, String, Object...)</a></span> - Method in class org.apache.logging.log4j.jpl.<a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html" title="class in org.apache.logging.log4j.jpl">Log4jSystemLogger</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html#log(java.lang.System.Logger.Level,java.lang.String,java.lang.Throwable)">log(System.Logger.Level, String, Throwable)</a></span> - Method in class org.apache.logging.log4j.jpl.<a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html" title="class in org.apache.logging.log4j.jpl">Log4jSystemLogger</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html#log(java.lang.System.Logger.Level,java.util.function.Supplier)">log(System.Logger.Level, Supplier&lt;String&gt;)</a></span> - Method in class org.apache.logging.log4j.jpl.<a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html" title="class in org.apache.logging.log4j.jpl">Log4jSystemLogger</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html#log(java.lang.System.Logger.Level,java.util.function.Supplier,java.lang.Throwable)">log(System.Logger.Level, Supplier&lt;String&gt;, Throwable)</a></span> - Method in class org.apache.logging.log4j.jpl.<a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html" title="class in org.apache.logging.log4j.jpl">Log4jSystemLogger</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html#log(java.lang.System.Logger.Level,java.util.ResourceBundle,java.lang.String,java.lang.Object...)">log(System.Logger.Level, ResourceBundle, String, Object...)</a></span> - Method in class org.apache.logging.log4j.jpl.<a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html" title="class in org.apache.logging.log4j.jpl">Log4jSystemLogger</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html#log(java.lang.System.Logger.Level,java.util.ResourceBundle,java.lang.String,java.lang.Throwable)">log(System.Logger.Level, ResourceBundle, String, Throwable)</a></span> - Method in class org.apache.logging.log4j.jpl.<a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html" title="class in org.apache.logging.log4j.jpl">Log4jSystemLogger</a></dt>
<dd>&nbsp;</dd>
<dt><a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html" title="class in org.apache.logging.log4j.jpl"><span class="typeNameLink">Log4jSystemLogger</span></a> - Class in <a href="org/apache/logging/log4j/jpl/package-summary.html">org.apache.logging.log4j.jpl</a></dt>
<dd>
<div class="block">JPL <code>logger</code> implementation that uses Log4j.</div>
</dd>
<dt><span class="memberNameLink"><a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html#%3Cinit%3E(org.apache.logging.log4j.spi.ExtendedLogger)">Log4jSystemLogger(ExtendedLogger)</a></span> - Constructor for class org.apache.logging.log4j.jpl.<a href="org/apache/logging/log4j/jpl/Log4jSystemLogger.html" title="class in org.apache.logging.log4j.jpl">Log4jSystemLogger</a></dt>
<dd>&nbsp;</dd>
<dt><a href="org/apache/logging/log4j/jpl/Log4jSystemLoggerAdapter.html" title="class in org.apache.logging.log4j.jpl"><span class="typeNameLink">Log4jSystemLoggerAdapter</span></a> - Class in <a href="org/apache/logging/log4j/jpl/package-summary.html">org.apache.logging.log4j.jpl</a></dt>
<dd>
<div class="block"><code>System.Logger</code> registry implementation using just log4j-api.</div>
</dd>
<dt><span class="memberNameLink"><a href="org/apache/logging/log4j/jpl/Log4jSystemLoggerAdapter.html#%3Cinit%3E()">Log4jSystemLoggerAdapter()</a></span> - Constructor for class org.apache.logging.log4j.jpl.<a href="org/apache/logging/log4j/jpl/Log4jSystemLoggerAdapter.html" title="class in org.apache.logging.log4j.jpl">Log4jSystemLoggerAdapter</a></dt>
<dd>&nbsp;</dd>
<dt><a href="org/apache/logging/log4j/jpl/Log4jSystemLoggerFinder.html" title="class in org.apache.logging.log4j.jpl"><span class="typeNameLink">Log4jSystemLoggerFinder</span></a> - Class in <a href="org/apache/logging/log4j/jpl/package-summary.html">org.apache.logging.log4j.jpl</a></dt>
<dd>&nbsp;</dd>
<dt><span class="memberNameLink"><a href="org/apache/logging/log4j/jpl/Log4jSystemLoggerFinder.html#%3Cinit%3E()">Log4jSystemLoggerFinder()</a></span> - Constructor for class org.apache.logging.log4j.jpl.<a href="org/apache/logging/log4j/jpl/Log4jSystemLoggerFinder.html" title="class in org.apache.logging.log4j.jpl">Log4jSystemLoggerFinder</a></dt>
<dd>&nbsp;</dd>
</dl>
<a id="I:N">
<!--   -->
</a>
<h2 class="title">N</h2>
<dl>
<dt><span class="memberNameLink"><a href="org/apache/logging/log4j/jpl/Log4jSystemLoggerAdapter.html#newLogger(java.lang.String,org.apache.logging.log4j.spi.LoggerContext)">newLogger(String, LoggerContext)</a></span> - Method in class org.apache.logging.log4j.jpl.<a href="org/apache/logging/log4j/jpl/Log4jSystemLoggerAdapter.html" title="class in org.apache.logging.log4j.jpl">Log4jSystemLoggerAdapter</a></dt>
<dd>&nbsp;</dd>
</dl>
<a id="I:O">
<!--   -->
</a>
<h2 class="title">O</h2>
<dl>
<dt><a href="org/apache/logging/log4j/jpl/package-summary.html">org.apache.logging.log4j.jpl</a> - package org.apache.logging.log4j.jpl</dt>
<dd>&nbsp;</dd>
</dl>
<a href="#I:G">G</a>&nbsp;<a href="#I:I">I</a>&nbsp;<a href="#I:L">L</a>&nbsp;<a href="#I:N">N</a>&nbsp;<a href="#I:O">O</a>&nbsp;<br><a href="allclasses-index.html">All&nbsp;Classes</a>&nbsp;<a href="allpackages-index.html">All&nbsp;Packages</a></div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="org/apache/logging/log4j/jpl/package-summary.html">Package</a></li>
<li>Class</li>
<li>Use</li>
<li><a href="org/apache/logging/log4j/jpl/package-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li class="navBarCell1Rev">Index</li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small><p align="center">Copyright &#169; 1999-2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.<br />             Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, the Apache Logging project logo,             and the Apache Log4j logo are trademarks of The Apache Software Foundation.</p></small></p>
</footer>
</body>
</html>
