<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>LogManager xref</title>
<link type="text/css" rel="stylesheet" href="../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../apidocs/org/apache/log4j/LogManager.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <em class="jxr_comment">/*</em>
<a name="2" href="#2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one or more</em>
<a name="3" href="#3">3</a>   <em class="jxr_comment"> * contributor license agreements.  See the NOTICE file distributed with</em>
<a name="4" href="#4">4</a>   <em class="jxr_comment"> * this work for additional information regarding copyright ownership.</em>
<a name="5" href="#5">5</a>   <em class="jxr_comment"> * The ASF licenses this file to You under the Apache License, Version 2.0</em>
<a name="6" href="#6">6</a>   <em class="jxr_comment"> * (the "License"); you may not use this file except in compliance with</em>
<a name="7" href="#7">7</a>   <em class="jxr_comment"> * the License.  You may obtain a copy of the License at</em>
<a name="8" href="#8">8</a>   <em class="jxr_comment"> * </em>
<a name="9" href="#9">9</a>   <em class="jxr_comment"> *      <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="10" href="#10">10</a>  <em class="jxr_comment"> * </em>
<a name="11" href="#11">11</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
<a name="12" href="#12">12</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
<a name="13" href="#13">13</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
<a name="14" href="#14">14</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
<a name="15" href="#15">15</a>  <em class="jxr_comment"> * limitations under the License.</em>
<a name="16" href="#16">16</a>  <em class="jxr_comment"> */</em>
<a name="17" href="#17">17</a>  
<a name="18" href="#18">18</a>  <strong class="jxr_keyword">package</strong> org.apache.log4j;
<a name="19" href="#19">19</a>  
<a name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.spi.LoggerRepository;
<a name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.spi.LoggerFactory;
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.spi.RepositorySelector;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.spi.DefaultRepositorySelector;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.spi.RootLogger;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.spi.NOPLoggerRepository;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.helpers.Loader;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.helpers.OptionConverter;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.helpers.LogLog;
<a name="29" href="#29">29</a>  
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> java.net.URL;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> java.net.MalformedURLException;
<a name="32" href="#32">32</a>  
<a name="33" href="#33">33</a>  
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> java.util.Enumeration;
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> java.io.StringWriter;
<a name="36" href="#36">36</a>  <strong class="jxr_keyword">import</strong> java.io.PrintWriter;
<a name="37" href="#37">37</a>  
<a name="38" href="#38">38</a>  <em class="jxr_javadoccomment">/**</em>
<a name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> * Use the &lt;code&gt;LogManager&lt;/code&gt; class to retreive {@link Logger}</em>
<a name="40" href="#40">40</a>  <em class="jxr_javadoccomment"> * instances or to operate on the current {@link</em>
<a name="41" href="#41">41</a>  <em class="jxr_javadoccomment"> * LoggerRepository}. When the &lt;code&gt;LogManager&lt;/code&gt; class is loaded</em>
<a name="42" href="#42">42</a>  <em class="jxr_javadoccomment"> * into memory the default initalzation procedure is inititated. The</em>
<a name="43" href="#43">43</a>  <em class="jxr_javadoccomment"> * default intialization procedure&lt;/a&gt; is described in the &lt;a</em>
<a name="44" href="#44">44</a>  <em class="jxr_javadoccomment"> * href="../../../../manual.html#defaultInit"&gt;short log4j manual&lt;/a&gt;.</em>
<a name="45" href="#45">45</a>  <em class="jxr_javadoccomment"> *</em>
<a name="46" href="#46">46</a>  <em class="jxr_javadoccomment"> * @author Ceki G&amp;uuml;lc&amp;uuml; */</em>
<a name="47" href="#47">47</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/log4j/LogManager.html">LogManager</a> {
<a name="48" href="#48">48</a>  
<a name="49" href="#49">49</a>    <em class="jxr_javadoccomment">/**</em>
<a name="50" href="#50">50</a>  <em class="jxr_javadoccomment">   * @deprecated This variable is for internal use only. It will</em>
<a name="51" href="#51">51</a>  <em class="jxr_javadoccomment">   * become package protected in future versions.</em>
<a name="52" href="#52">52</a>  <em class="jxr_javadoccomment">   * */</em>
<a name="53" href="#53">53</a>    <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> String DEFAULT_CONFIGURATION_FILE = <span class="jxr_string">"log4j.properties"</span>;
<a name="54" href="#54">54</a>    
<a name="55" href="#55">55</a>    <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String DEFAULT_XML_CONFIGURATION_FILE = <span class="jxr_string">"log4j.xml"</span>;  
<a name="56" href="#56">56</a>     
<a name="57" href="#57">57</a>    <em class="jxr_javadoccomment">/**</em>
<a name="58" href="#58">58</a>  <em class="jxr_javadoccomment">   * @deprecated This variable is for internal use only. It will</em>
<a name="59" href="#59">59</a>  <em class="jxr_javadoccomment">   * become private in future versions.</em>
<a name="60" href="#60">60</a>  <em class="jxr_javadoccomment">   * */</em>
<a name="61" href="#61">61</a>    <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">public</strong> String DEFAULT_CONFIGURATION_KEY=<span class="jxr_string">"log4j.configuration"</span>;
<a name="62" href="#62">62</a>  
<a name="63" href="#63">63</a>    <em class="jxr_javadoccomment">/**</em>
<a name="64" href="#64">64</a>  <em class="jxr_javadoccomment">   * @deprecated This variable is for internal use only. It will</em>
<a name="65" href="#65">65</a>  <em class="jxr_javadoccomment">   * become private in future versions.</em>
<a name="66" href="#66">66</a>  <em class="jxr_javadoccomment">   * */</em>
<a name="67" href="#67">67</a>    <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">public</strong> String CONFIGURATOR_CLASS_KEY=<span class="jxr_string">"log4j.configuratorClass"</span>;
<a name="68" href="#68">68</a>  
<a name="69" href="#69">69</a>    <em class="jxr_javadoccomment">/**</em>
<a name="70" href="#70">70</a>  <em class="jxr_javadoccomment">  * @deprecated This variable is for internal use only. It will</em>
<a name="71" href="#71">71</a>  <em class="jxr_javadoccomment">  * become private in future versions.</em>
<a name="72" href="#72">72</a>  <em class="jxr_javadoccomment">  */</em>
<a name="73" href="#73">73</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> String DEFAULT_INIT_OVERRIDE_KEY = 
<a name="74" href="#74">74</a>                                                   <span class="jxr_string">"log4j.defaultInitOverride"</span>;
<a name="75" href="#75">75</a>  
<a name="76" href="#76">76</a>  
<a name="77" href="#77">77</a>    <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">private</strong> Object guard = <strong class="jxr_keyword">null</strong>;
<a name="78" href="#78">78</a>    <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">private</strong> <a href="../../../org/apache/log4j/spi/RepositorySelector.html">RepositorySelector</a> repositorySelector;
<a name="79" href="#79">79</a>  
<a name="80" href="#80">80</a>    <strong class="jxr_keyword">static</strong> {
<a name="81" href="#81">81</a>      <em class="jxr_comment">// By default we use a DefaultRepositorySelector which always returns 'h'.</em>
<a name="82" href="#82">82</a>      <a href="../../../org/apache/log4j/Hierarchy.html">Hierarchy</a> h = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/Hierarchy.html">Hierarchy</a>(<strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/spi/RootLogger.html">RootLogger</a>((Level) Level.DEBUG));
<a name="83" href="#83">83</a>      repositorySelector = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/spi/DefaultRepositorySelector.html">DefaultRepositorySelector</a>(h);
<a name="84" href="#84">84</a>  
<a name="85" href="#85">85</a>      <em class="jxr_javadoccomment">/**</em><em class="jxr_javadoccomment"> Search for the properties file log4j.properties in the CLASSPATH.  */</em>
<a name="86" href="#86">86</a>      String override =OptionConverter.getSystemProperty(DEFAULT_INIT_OVERRIDE_KEY,
<a name="87" href="#87">87</a>  						       <strong class="jxr_keyword">null</strong>);
<a name="88" href="#88">88</a>  
<a name="89" href="#89">89</a>      <em class="jxr_comment">// if there is no default init override, then get the resource</em>
<a name="90" href="#90">90</a>      <em class="jxr_comment">// specified by the user or the default config file.</em>
<a name="91" href="#91">91</a>      <strong class="jxr_keyword">if</strong>(override == <strong class="jxr_keyword">null</strong> || <span class="jxr_string">"false"</span>.equalsIgnoreCase(override)) {
<a name="92" href="#92">92</a>  
<a name="93" href="#93">93</a>        String configurationOptionStr = OptionConverter.getSystemProperty(
<a name="94" href="#94">94</a>  							  DEFAULT_CONFIGURATION_KEY, 
<a name="95" href="#95">95</a>  							  <strong class="jxr_keyword">null</strong>);
<a name="96" href="#96">96</a>  
<a name="97" href="#97">97</a>        String configuratorClassName = OptionConverter.getSystemProperty(
<a name="98" href="#98">98</a>                                                     CONFIGURATOR_CLASS_KEY, 
<a name="99" href="#99">99</a>  						   <strong class="jxr_keyword">null</strong>);
<a name="100" href="#100">100</a> 
<a name="101" href="#101">101</a>       URL url = <strong class="jxr_keyword">null</strong>;
<a name="102" href="#102">102</a> 
<a name="103" href="#103">103</a>       <em class="jxr_comment">// if the user has not specified the log4j.configuration</em>
<a name="104" href="#104">104</a>       <em class="jxr_comment">// property, we search first for the file "log4j.xml" and then</em>
<a name="105" href="#105">105</a>       <em class="jxr_comment">// "log4j.properties"</em>
<a name="106" href="#106">106</a>       <strong class="jxr_keyword">if</strong>(configurationOptionStr == <strong class="jxr_keyword">null</strong>) {	
<a name="107" href="#107">107</a> 	url = Loader.getResource(DEFAULT_XML_CONFIGURATION_FILE);
<a name="108" href="#108">108</a> 	<strong class="jxr_keyword">if</strong>(url == <strong class="jxr_keyword">null</strong>) {
<a name="109" href="#109">109</a> 	  url = Loader.getResource(DEFAULT_CONFIGURATION_FILE);
<a name="110" href="#110">110</a> 	}
<a name="111" href="#111">111</a>       } <strong class="jxr_keyword">else</strong> {
<a name="112" href="#112">112</a> 	<strong class="jxr_keyword">try</strong> {
<a name="113" href="#113">113</a> 	  url = <strong class="jxr_keyword">new</strong> URL(configurationOptionStr);
<a name="114" href="#114">114</a> 	} <strong class="jxr_keyword">catch</strong> (MalformedURLException ex) {
<a name="115" href="#115">115</a> 	  <em class="jxr_comment">// so, resource is not a URL:</em>
<a name="116" href="#116">116</a> 	  <em class="jxr_comment">// attempt to get the resource from the class path</em>
<a name="117" href="#117">117</a> 	  url = Loader.getResource(configurationOptionStr); 
<a name="118" href="#118">118</a> 	}	
<a name="119" href="#119">119</a>       }
<a name="120" href="#120">120</a>       
<a name="121" href="#121">121</a>       <em class="jxr_comment">// If we have a non-null url, then delegate the rest of the</em>
<a name="122" href="#122">122</a>       <em class="jxr_comment">// configuration to the OptionConverter.selectAndConfigure</em>
<a name="123" href="#123">123</a>       <em class="jxr_comment">// method.</em>
<a name="124" href="#124">124</a>       <strong class="jxr_keyword">if</strong>(url != <strong class="jxr_keyword">null</strong>) {
<a name="125" href="#125">125</a> 	    LogLog.debug(<span class="jxr_string">"Using URL ["</span>+url+<span class="jxr_string">"] for automatic log4j configuration."</span>);
<a name="126" href="#126">126</a>         <strong class="jxr_keyword">try</strong> {
<a name="127" href="#127">127</a>             OptionConverter.selectAndConfigure(url, configuratorClassName,
<a name="128" href="#128">128</a> 					   LogManager.getLoggerRepository());
<a name="129" href="#129">129</a>         } <strong class="jxr_keyword">catch</strong> (NoClassDefFoundError e) {
<a name="130" href="#130">130</a>             LogLog.warn(<span class="jxr_string">"Error during default initialization"</span>, e);
<a name="131" href="#131">131</a>         }
<a name="132" href="#132">132</a>       } <strong class="jxr_keyword">else</strong> {
<a name="133" href="#133">133</a> 	    LogLog.debug(<span class="jxr_string">"Could not find resource: ["</span>+configurationOptionStr+<span class="jxr_string">"]."</span>);
<a name="134" href="#134">134</a>       }
<a name="135" href="#135">135</a>     } <strong class="jxr_keyword">else</strong> {
<a name="136" href="#136">136</a>         LogLog.debug(<span class="jxr_string">"Default initialization of overridden by "</span> + 
<a name="137" href="#137">137</a>             DEFAULT_INIT_OVERRIDE_KEY + <span class="jxr_string">"property."</span>); 
<a name="138" href="#138">138</a>     }  
<a name="139" href="#139">139</a>   } 
<a name="140" href="#140">140</a> 
<a name="141" href="#141">141</a>   <em class="jxr_javadoccomment">/**</em>
<a name="142" href="#142">142</a> <em class="jxr_javadoccomment">     Sets &lt;code&gt;LoggerFactory&lt;/code&gt; but only if the correct</em>
<a name="143" href="#143">143</a> <em class="jxr_javadoccomment">     &lt;em&gt;guard&lt;/em&gt; is passed as parameter.</em>
<a name="144" href="#144">144</a> <em class="jxr_javadoccomment">     </em>
<a name="145" href="#145">145</a> <em class="jxr_javadoccomment">     &lt;p&gt;Initally the guard is null.  If the guard is</em>
<a name="146" href="#146">146</a> <em class="jxr_javadoccomment">     &lt;code&gt;null&lt;/code&gt;, then invoking this method sets the logger</em>
<a name="147" href="#147">147</a> <em class="jxr_javadoccomment">     factory and the guard. Following invocations will throw a {@link</em>
<a name="148" href="#148">148</a> <em class="jxr_javadoccomment">     IllegalArgumentException}, unless the previously set</em>
<a name="149" href="#149">149</a> <em class="jxr_javadoccomment">     &lt;code&gt;guard&lt;/code&gt; is passed as the second parameter.</em>
<a name="150" href="#150">150</a> 
<a name="151" href="#151">151</a> <em class="jxr_javadoccomment">     &lt;p&gt;This allows a high-level component to set the {@link</em>
<a name="152" href="#152">152</a> <em class="jxr_javadoccomment">     RepositorySelector} used by the &lt;code&gt;LogManager&lt;/code&gt;.</em>
<a name="153" href="#153">153</a> <em class="jxr_javadoccomment">     </em>
<a name="154" href="#154">154</a> <em class="jxr_javadoccomment">     &lt;p&gt;For example, when tomcat starts it will be able to install its</em>
<a name="155" href="#155">155</a> <em class="jxr_javadoccomment">     own repository selector. However, if and when Tomcat is embedded</em>
<a name="156" href="#156">156</a> <em class="jxr_javadoccomment">     within JBoss, then JBoss will install its own repository selector</em>
<a name="157" href="#157">157</a> <em class="jxr_javadoccomment">     and Tomcat will use the repository selector set by its container,</em>
<a name="158" href="#158">158</a> <em class="jxr_javadoccomment">     JBoss.  */</em>
<a name="159" href="#159">159</a>   <strong class="jxr_keyword">static</strong>
<a name="160" href="#160">160</a>   <strong class="jxr_keyword">public</strong>
<a name="161" href="#161">161</a>   <strong class="jxr_keyword">void</strong> setRepositorySelector(<a href="../../../org/apache/log4j/spi/RepositorySelector.html">RepositorySelector</a> selector, Object guard) 
<a name="162" href="#162">162</a>                                                  <strong class="jxr_keyword">throws</strong> IllegalArgumentException {
<a name="163" href="#163">163</a>     <strong class="jxr_keyword">if</strong>((LogManager.guard != <strong class="jxr_keyword">null</strong>) &amp;&amp; (LogManager.guard != guard)) {
<a name="164" href="#164">164</a>       <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(
<a name="165" href="#165">165</a>            <span class="jxr_string">"Attempted to reset the LoggerFactory without possessing the guard."</span>);
<a name="166" href="#166">166</a>     }
<a name="167" href="#167">167</a> 
<a name="168" href="#168">168</a>     <strong class="jxr_keyword">if</strong>(selector == <strong class="jxr_keyword">null</strong>) {
<a name="169" href="#169">169</a>       <strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"RepositorySelector must be non-null."</span>);
<a name="170" href="#170">170</a>     }
<a name="171" href="#171">171</a> 
<a name="172" href="#172">172</a>     LogManager.guard = guard;
<a name="173" href="#173">173</a>     LogManager.repositorySelector = selector;
<a name="174" href="#174">174</a>   }
<a name="175" href="#175">175</a> 
<a name="176" href="#176">176</a> 
<a name="177" href="#177">177</a>     <em class="jxr_javadoccomment">/**</em>
<a name="178" href="#178">178</a> <em class="jxr_javadoccomment">     * This method tests if called from a method that</em>
<a name="179" href="#179">179</a> <em class="jxr_javadoccomment">     * is known to result in class members being abnormally</em>
<a name="180" href="#180">180</a> <em class="jxr_javadoccomment">     * set to null but is assumed to be harmless since the</em>
<a name="181" href="#181">181</a> <em class="jxr_javadoccomment">     * all classes are in the process of being unloaded.</em>
<a name="182" href="#182">182</a> <em class="jxr_javadoccomment">     *</em>
<a name="183" href="#183">183</a> <em class="jxr_javadoccomment">     * @param ex exception used to determine calling stack.</em>
<a name="184" href="#184">184</a> <em class="jxr_javadoccomment">     * @return true if calling stack is recognized as likely safe.</em>
<a name="185" href="#185">185</a> <em class="jxr_javadoccomment">     */</em>
<a name="186" href="#186">186</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> isLikelySafeScenario(<strong class="jxr_keyword">final</strong> Exception ex) {
<a name="187" href="#187">187</a>       StringWriter stringWriter = <strong class="jxr_keyword">new</strong> StringWriter();
<a name="188" href="#188">188</a>       ex.printStackTrace(<strong class="jxr_keyword">new</strong> PrintWriter(stringWriter));
<a name="189" href="#189">189</a>       String msg = stringWriter.toString();
<a name="190" href="#190">190</a>       <strong class="jxr_keyword">return</strong> msg.indexOf(<span class="jxr_string">"org.apache.catalina.loader.WebappClassLoader.stop"</span>) != -1;
<a name="191" href="#191">191</a>   }
<a name="192" href="#192">192</a> 
<a name="193" href="#193">193</a>   <strong class="jxr_keyword">static</strong>
<a name="194" href="#194">194</a>   <strong class="jxr_keyword">public</strong>
<a name="195" href="#195">195</a>   <a href="../../../org/apache/log4j/spi/LoggerRepository.html">LoggerRepository</a> getLoggerRepository() {
<a name="196" href="#196">196</a>     <strong class="jxr_keyword">if</strong> (repositorySelector == <strong class="jxr_keyword">null</strong>) {
<a name="197" href="#197">197</a>         repositorySelector = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/spi/DefaultRepositorySelector.html">DefaultRepositorySelector</a>(<strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/spi/NOPLoggerRepository.html">NOPLoggerRepository</a>());
<a name="198" href="#198">198</a>         guard = <strong class="jxr_keyword">null</strong>;
<a name="199" href="#199">199</a>         Exception ex = <strong class="jxr_keyword">new</strong> IllegalStateException(<span class="jxr_string">"Class invariant violation"</span>);
<a name="200" href="#200">200</a>         String msg =
<a name="201" href="#201">201</a>                 <span class="jxr_string">"log4j called after unloading, see http://logging.apache.org/log4j/1.2/faq.html#unload."</span>;
<a name="202" href="#202">202</a>         <strong class="jxr_keyword">if</strong> (isLikelySafeScenario(ex)) {
<a name="203" href="#203">203</a>             LogLog.debug(msg, ex);
<a name="204" href="#204">204</a>         } <strong class="jxr_keyword">else</strong> {
<a name="205" href="#205">205</a>             LogLog.error(msg, ex);
<a name="206" href="#206">206</a>         }
<a name="207" href="#207">207</a>     }
<a name="208" href="#208">208</a>     <strong class="jxr_keyword">return</strong> repositorySelector.getLoggerRepository();
<a name="209" href="#209">209</a>   }
<a name="210" href="#210">210</a> 
<a name="211" href="#211">211</a>   <em class="jxr_javadoccomment">/**</em>
<a name="212" href="#212">212</a> <em class="jxr_javadoccomment">     Retrieve the appropriate root logger.</em>
<a name="213" href="#213">213</a> <em class="jxr_javadoccomment">   */</em>
<a name="214" href="#214">214</a>   <strong class="jxr_keyword">public</strong>
<a name="215" href="#215">215</a>   <strong class="jxr_keyword">static</strong> 
<a name="216" href="#216">216</a>   <a href="../../../org/apache/log4j/Logger.html">Logger</a> getRootLogger() {
<a name="217" href="#217">217</a>      <em class="jxr_comment">// Delegate the actual manufacturing of the logger to the logger repository.</em>
<a name="218" href="#218">218</a>     <strong class="jxr_keyword">return</strong> getLoggerRepository().getRootLogger();
<a name="219" href="#219">219</a>   }
<a name="220" href="#220">220</a> 
<a name="221" href="#221">221</a>   <em class="jxr_javadoccomment">/**</em>
<a name="222" href="#222">222</a> <em class="jxr_javadoccomment">     Retrieve the appropriate {@link Logger} instance.  </em>
<a name="223" href="#223">223</a> <em class="jxr_javadoccomment">  */</em>
<a name="224" href="#224">224</a>   <strong class="jxr_keyword">public</strong>
<a name="225" href="#225">225</a>   <strong class="jxr_keyword">static</strong> 
<a name="226" href="#226">226</a>   <a href="../../../org/apache/log4j/Logger.html">Logger</a> getLogger(<strong class="jxr_keyword">final</strong> String name) {
<a name="227" href="#227">227</a>      <em class="jxr_comment">// Delegate the actual manufacturing of the logger to the logger repository.</em>
<a name="228" href="#228">228</a>     <strong class="jxr_keyword">return</strong> getLoggerRepository().getLogger(name);
<a name="229" href="#229">229</a>   }
<a name="230" href="#230">230</a> 
<a name="231" href="#231">231</a>  <em class="jxr_javadoccomment">/**</em>
<a name="232" href="#232">232</a> <em class="jxr_javadoccomment">     Retrieve the appropriate {@link Logger} instance.  </em>
<a name="233" href="#233">233</a> <em class="jxr_javadoccomment">  */</em>
<a name="234" href="#234">234</a>   <strong class="jxr_keyword">public</strong>
<a name="235" href="#235">235</a>   <strong class="jxr_keyword">static</strong> 
<a name="236" href="#236">236</a>   <a href="../../../org/apache/log4j/Logger.html">Logger</a> getLogger(<strong class="jxr_keyword">final</strong> Class clazz) {
<a name="237" href="#237">237</a>      <em class="jxr_comment">// Delegate the actual manufacturing of the logger to the logger repository.</em>
<a name="238" href="#238">238</a>     <strong class="jxr_keyword">return</strong> getLoggerRepository().getLogger(clazz.getName());
<a name="239" href="#239">239</a>   }
<a name="240" href="#240">240</a> 
<a name="241" href="#241">241</a> 
<a name="242" href="#242">242</a>   <em class="jxr_javadoccomment">/**</em>
<a name="243" href="#243">243</a> <em class="jxr_javadoccomment">     Retrieve the appropriate {@link Logger} instance.  </em>
<a name="244" href="#244">244</a> <em class="jxr_javadoccomment">  */</em>
<a name="245" href="#245">245</a>   <strong class="jxr_keyword">public</strong>
<a name="246" href="#246">246</a>   <strong class="jxr_keyword">static</strong> 
<a name="247" href="#247">247</a>   <a href="../../../org/apache/log4j/Logger.html">Logger</a> getLogger(<strong class="jxr_keyword">final</strong> String name, <strong class="jxr_keyword">final</strong> <a href="../../../org/apache/log4j/spi/LoggerFactory.html">LoggerFactory</a> factory) {
<a name="248" href="#248">248</a>      <em class="jxr_comment">// Delegate the actual manufacturing of the logger to the logger repository.</em>
<a name="249" href="#249">249</a>     <strong class="jxr_keyword">return</strong> getLoggerRepository().getLogger(name, factory);
<a name="250" href="#250">250</a>   }  
<a name="251" href="#251">251</a> 
<a name="252" href="#252">252</a>   <strong class="jxr_keyword">public</strong>
<a name="253" href="#253">253</a>   <strong class="jxr_keyword">static</strong>
<a name="254" href="#254">254</a>   <a href="../../../org/apache/log4j/Logger.html">Logger</a> exists(<strong class="jxr_keyword">final</strong> String name) {
<a name="255" href="#255">255</a>     <strong class="jxr_keyword">return</strong> getLoggerRepository().exists(name);
<a name="256" href="#256">256</a>   }
<a name="257" href="#257">257</a> 
<a name="258" href="#258">258</a>   <strong class="jxr_keyword">public</strong>
<a name="259" href="#259">259</a>   <strong class="jxr_keyword">static</strong>
<a name="260" href="#260">260</a>   Enumeration getCurrentLoggers() {
<a name="261" href="#261">261</a>     <strong class="jxr_keyword">return</strong> getLoggerRepository().getCurrentLoggers();
<a name="262" href="#262">262</a>   }
<a name="263" href="#263">263</a> 
<a name="264" href="#264">264</a>   <strong class="jxr_keyword">public</strong>
<a name="265" href="#265">265</a>   <strong class="jxr_keyword">static</strong>
<a name="266" href="#266">266</a>   <strong class="jxr_keyword">void</strong> shutdown() {
<a name="267" href="#267">267</a>     getLoggerRepository().shutdown();
<a name="268" href="#268">268</a>   }
<a name="269" href="#269">269</a> 
<a name="270" href="#270">270</a>   <strong class="jxr_keyword">public</strong>
<a name="271" href="#271">271</a>   <strong class="jxr_keyword">static</strong>
<a name="272" href="#272">272</a>   <strong class="jxr_keyword">void</strong> resetConfiguration() {
<a name="273" href="#273">273</a>     getLoggerRepository().resetConfiguration();
<a name="274" href="#274">274</a>   }
<a name="275" href="#275">275</a> }
<a name="276" href="#276">276</a> 
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

