<!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>LoggerTestCase xref</title>
<link type="text/css" rel="stylesheet" href="../../../stylesheet.css" />
</head>
<body>
<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> junit.framework.TestCase;
<a name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.spi.LoggingEvent;
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.spi.RootLogger;
<a name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.spi.LoggerRepository;
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.spi.HierarchyEventListener;
<a name="25" href="#25">25</a>  
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> java.util.Enumeration;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> java.util.Locale;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> java.util.ResourceBundle;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> java.util.Vector;
<a name="30" href="#30">30</a>  
<a name="31" href="#31">31</a>  <em class="jxr_javadoccomment">/**</em>
<a name="32" href="#32">32</a>  <em class="jxr_javadoccomment">   Used for internal unit testing the Logger class.</em>
<a name="33" href="#33">33</a>  
<a name="34" href="#34">34</a>  <em class="jxr_javadoccomment">   @author Ceki G&amp;uuml;lc&amp;uuml;</em>
<a name="35" href="#35">35</a>  
<a name="36" href="#36">36</a>  <em class="jxr_javadoccomment">*/</em>
<a name="37" href="#37">37</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">LoggerTestCase</a> <strong class="jxr_keyword">extends</strong> TestCase {
<a name="38" href="#38">38</a>  
<a name="39" href="#39">39</a>    Logger logger;
<a name="40" href="#40">40</a>    Appender a1;
<a name="41" href="#41">41</a>    Appender a2;
<a name="42" href="#42">42</a>  
<a name="43" href="#43">43</a>    ResourceBundle rbUS;
<a name="44" href="#44">44</a>    ResourceBundle rbFR; 
<a name="45" href="#45">45</a>    ResourceBundle rbCH; 
<a name="46" href="#46">46</a>  
<a name="47" href="#47">47</a>    <em class="jxr_comment">// A short message.</em>
<a name="48" href="#48">48</a>    <strong class="jxr_keyword">static</strong> String MSG = <span class="jxr_string">"M"</span>;
<a name="49" href="#49">49</a>    
<a name="50" href="#50">50</a>  
<a name="51" href="#51">51</a>    <strong class="jxr_keyword">public</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">LoggerTestCase</a>(String name) {
<a name="52" href="#52">52</a>      <strong class="jxr_keyword">super</strong>(name);
<a name="53" href="#53">53</a>    }
<a name="54" href="#54">54</a>  
<a name="55" href="#55">55</a>    <strong class="jxr_keyword">public</strong>
<a name="56" href="#56">56</a>    <strong class="jxr_keyword">void</strong> setUp() {
<a name="57" href="#57">57</a>      rbUS = ResourceBundle.getBundle(<span class="jxr_string">"L7D"</span>, <strong class="jxr_keyword">new</strong> Locale(<span class="jxr_string">"en"</span>, <span class="jxr_string">"US"</span>));
<a name="58" href="#58">58</a>      assertNotNull(rbUS);
<a name="59" href="#59">59</a>  
<a name="60" href="#60">60</a>      rbFR = ResourceBundle.getBundle(<span class="jxr_string">"L7D"</span>, <strong class="jxr_keyword">new</strong> Locale(<span class="jxr_string">"fr"</span>, <span class="jxr_string">"FR"</span>));
<a name="61" href="#61">61</a>      assertNotNull(<span class="jxr_string">"Got a null resource bundle."</span>, rbFR);
<a name="62" href="#62">62</a>  
<a name="63" href="#63">63</a>      rbCH = ResourceBundle.getBundle(<span class="jxr_string">"L7D"</span>, <strong class="jxr_keyword">new</strong> Locale(<span class="jxr_string">"fr"</span>, <span class="jxr_string">"CH"</span>));
<a name="64" href="#64">64</a>      assertNotNull(<span class="jxr_string">"Got a null resource bundle."</span>, rbCH);
<a name="65" href="#65">65</a>  
<a name="66" href="#66">66</a>    }
<a name="67" href="#67">67</a>  
<a name="68" href="#68">68</a>    <strong class="jxr_keyword">public</strong>
<a name="69" href="#69">69</a>    <strong class="jxr_keyword">void</strong> tearDown() {
<a name="70" href="#70">70</a>      <em class="jxr_comment">// Regular users should not use the clear method lightly!</em>
<a name="71" href="#71">71</a>      <em class="jxr_comment">//Logger.getDefaultHierarchy().clear();</em>
<a name="72" href="#72">72</a>      BasicConfigurator.resetConfiguration();
<a name="73" href="#73">73</a>      a1 = <strong class="jxr_keyword">null</strong>;
<a name="74" href="#74">74</a>      a2 = <strong class="jxr_keyword">null</strong>;
<a name="75" href="#75">75</a>    }
<a name="76" href="#76">76</a>  
<a name="77" href="#77">77</a>    <em class="jxr_javadoccomment">/**</em>
<a name="78" href="#78">78</a>  <em class="jxr_javadoccomment">     Add an appender and see if it can be retrieved.</em>
<a name="79" href="#79">79</a>  <em class="jxr_javadoccomment">  */</em>
<a name="80" href="#80">80</a>    <strong class="jxr_keyword">public</strong>
<a name="81" href="#81">81</a>    <strong class="jxr_keyword">void</strong> testAppender1() {
<a name="82" href="#82">82</a>      logger = Logger.getLogger(<span class="jxr_string">"test"</span>);
<a name="83" href="#83">83</a>      a1 = <strong class="jxr_keyword">new</strong> FileAppender();
<a name="84" href="#84">84</a>      a1.setName(<span class="jxr_string">"testAppender1"</span>);             
<a name="85" href="#85">85</a>      logger.addAppender(a1);
<a name="86" href="#86">86</a>  
<a name="87" href="#87">87</a>      Enumeration enumeration = logger.getAllAppenders();
<a name="88" href="#88">88</a>      Appender aHat = (Appender) enumeration.nextElement();    
<a name="89" href="#89">89</a>      assertEquals(a1, aHat);    
<a name="90" href="#90">90</a>    }
<a name="91" href="#91">91</a>  
<a name="92" href="#92">92</a>    <em class="jxr_javadoccomment">/**</em>
<a name="93" href="#93">93</a>  <em class="jxr_javadoccomment">     Add an appender X, Y, remove X and check if Y is the only</em>
<a name="94" href="#94">94</a>  <em class="jxr_javadoccomment">     remaining appender.</em>
<a name="95" href="#95">95</a>  <em class="jxr_javadoccomment">  */</em>
<a name="96" href="#96">96</a>    <strong class="jxr_keyword">public</strong>
<a name="97" href="#97">97</a>    <strong class="jxr_keyword">void</strong> testAppender2() {
<a name="98" href="#98">98</a>      a1 = <strong class="jxr_keyword">new</strong> FileAppender();
<a name="99" href="#99">99</a>      a1.setName(<span class="jxr_string">"testAppender2.1"</span>);           
<a name="100" href="#100">100</a>     a2 = <strong class="jxr_keyword">new</strong> FileAppender();
<a name="101" href="#101">101</a>     a2.setName(<span class="jxr_string">"testAppender2.2"</span>);           
<a name="102" href="#102">102</a> 
<a name="103" href="#103">103</a>     logger = Logger.getLogger(<span class="jxr_string">"test"</span>);
<a name="104" href="#104">104</a>     logger.addAppender(a1);
<a name="105" href="#105">105</a>     logger.addAppender(a2);    
<a name="106" href="#106">106</a>     logger.removeAppender(<span class="jxr_string">"testAppender2.1"</span>);
<a name="107" href="#107">107</a>     Enumeration enumeration = logger.getAllAppenders();
<a name="108" href="#108">108</a>     Appender aHat = (Appender) enumeration.nextElement();    
<a name="109" href="#109">109</a>     assertEquals(a2, aHat);
<a name="110" href="#110">110</a>     assertTrue(!enumeration.hasMoreElements());
<a name="111" href="#111">111</a>   }
<a name="112" href="#112">112</a> 
<a name="113" href="#113">113</a>   <em class="jxr_javadoccomment">/**</em>
<a name="114" href="#114">114</a> <em class="jxr_javadoccomment">     Test if logger a.b inherits its appender from a.</em>
<a name="115" href="#115">115</a> <em class="jxr_javadoccomment">   */</em>
<a name="116" href="#116">116</a>   <strong class="jxr_keyword">public</strong>
<a name="117" href="#117">117</a>   <strong class="jxr_keyword">void</strong> testAdditivity1() {
<a name="118" href="#118">118</a>     Logger a = Logger.getLogger(<span class="jxr_string">"a"</span>);
<a name="119" href="#119">119</a>     Logger ab = Logger.getLogger(<span class="jxr_string">"a.b"</span>);
<a name="120" href="#120">120</a>     <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a> ca = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a>();
<a name="121" href="#121">121</a>     a.addAppender(ca);
<a name="122" href="#122">122</a>     
<a name="123" href="#123">123</a>                    assertEquals(ca.counter, 0);
<a name="124" href="#124">124</a>     ab.debug(MSG); assertEquals(ca.counter, 1);
<a name="125" href="#125">125</a>     ab.info(MSG);  assertEquals(ca.counter, 2);
<a name="126" href="#126">126</a>     ab.warn(MSG);  assertEquals(ca.counter, 3);
<a name="127" href="#127">127</a>     ab.error(MSG); assertEquals(ca.counter, 4);    
<a name="128" href="#128">128</a>     
<a name="129" href="#129">129</a> 
<a name="130" href="#130">130</a>   }
<a name="131" href="#131">131</a> 
<a name="132" href="#132">132</a>   <em class="jxr_javadoccomment">/**</em>
<a name="133" href="#133">133</a> <em class="jxr_javadoccomment">     Test multiple additivity.</em>
<a name="134" href="#134">134</a> 
<a name="135" href="#135">135</a> <em class="jxr_javadoccomment">   */</em>
<a name="136" href="#136">136</a>   <strong class="jxr_keyword">public</strong>
<a name="137" href="#137">137</a>   <strong class="jxr_keyword">void</strong> testAdditivity2() {
<a name="138" href="#138">138</a>     
<a name="139" href="#139">139</a>     Logger a = Logger.getLogger(<span class="jxr_string">"a"</span>);
<a name="140" href="#140">140</a>     Logger ab = Logger.getLogger(<span class="jxr_string">"a.b"</span>);
<a name="141" href="#141">141</a>     Logger abc = Logger.getLogger(<span class="jxr_string">"a.b.c"</span>);
<a name="142" href="#142">142</a>     Logger x   = Logger.getLogger(<span class="jxr_string">"x"</span>);
<a name="143" href="#143">143</a> 
<a name="144" href="#144">144</a>     <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a> ca1 = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a>();
<a name="145" href="#145">145</a>     <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a> ca2 = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a>();
<a name="146" href="#146">146</a> 
<a name="147" href="#147">147</a>     a.addAppender(ca1);
<a name="148" href="#148">148</a>     abc.addAppender(ca2);
<a name="149" href="#149">149</a> 
<a name="150" href="#150">150</a>     assertEquals(ca1.counter, 0); 
<a name="151" href="#151">151</a>     assertEquals(ca2.counter, 0);        
<a name="152" href="#152">152</a>     
<a name="153" href="#153">153</a>     ab.debug(MSG);  
<a name="154" href="#154">154</a>     assertEquals(ca1.counter, 1); 
<a name="155" href="#155">155</a>     assertEquals(ca2.counter, 0);        
<a name="156" href="#156">156</a> 
<a name="157" href="#157">157</a>     abc.debug(MSG);
<a name="158" href="#158">158</a>     assertEquals(ca1.counter, 2); 
<a name="159" href="#159">159</a>     assertEquals(ca2.counter, 1);        
<a name="160" href="#160">160</a> 
<a name="161" href="#161">161</a>     x.debug(MSG);
<a name="162" href="#162">162</a>     assertEquals(ca1.counter, 2); 
<a name="163" href="#163">163</a>     assertEquals(ca2.counter, 1);    
<a name="164" href="#164">164</a>   }
<a name="165" href="#165">165</a> 
<a name="166" href="#166">166</a>   <em class="jxr_javadoccomment">/**</em>
<a name="167" href="#167">167</a> <em class="jxr_javadoccomment">     Test additivity flag.</em>
<a name="168" href="#168">168</a> 
<a name="169" href="#169">169</a> <em class="jxr_javadoccomment">   */</em>
<a name="170" href="#170">170</a>   <strong class="jxr_keyword">public</strong>
<a name="171" href="#171">171</a>   <strong class="jxr_keyword">void</strong> testAdditivity3() {
<a name="172" href="#172">172</a> 
<a name="173" href="#173">173</a>     Logger root = Logger.getRootLogger();    
<a name="174" href="#174">174</a>     Logger a = Logger.getLogger(<span class="jxr_string">"a"</span>);
<a name="175" href="#175">175</a>     Logger ab = Logger.getLogger(<span class="jxr_string">"a.b"</span>);
<a name="176" href="#176">176</a>     Logger abc = Logger.getLogger(<span class="jxr_string">"a.b.c"</span>);
<a name="177" href="#177">177</a> 
<a name="178" href="#178">178</a>     <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a> caRoot = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a>();
<a name="179" href="#179">179</a>     <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a> caA = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a>();
<a name="180" href="#180">180</a>     <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a> caABC = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a>();
<a name="181" href="#181">181</a> 
<a name="182" href="#182">182</a>     root.addAppender(caRoot);
<a name="183" href="#183">183</a>     a.addAppender(caA);
<a name="184" href="#184">184</a>     abc.addAppender(caABC);
<a name="185" href="#185">185</a> 
<a name="186" href="#186">186</a>     assertEquals(caRoot.counter, 0); 
<a name="187" href="#187">187</a>     assertEquals(caA.counter, 0); 
<a name="188" href="#188">188</a>     assertEquals(caABC.counter, 0);        
<a name="189" href="#189">189</a>     
<a name="190" href="#190">190</a>     ab.setAdditivity(false);
<a name="191" href="#191">191</a> 
<a name="192" href="#192">192</a> 
<a name="193" href="#193">193</a>     a.debug(MSG);  
<a name="194" href="#194">194</a>     assertEquals(caRoot.counter, 1); 
<a name="195" href="#195">195</a>     assertEquals(caA.counter, 1); 
<a name="196" href="#196">196</a>     assertEquals(caABC.counter, 0);        
<a name="197" href="#197">197</a> 
<a name="198" href="#198">198</a>     ab.debug(MSG);  
<a name="199" href="#199">199</a>     assertEquals(caRoot.counter, 1); 
<a name="200" href="#200">200</a>     assertEquals(caA.counter, 1); 
<a name="201" href="#201">201</a>     assertEquals(caABC.counter, 0);        
<a name="202" href="#202">202</a> 
<a name="203" href="#203">203</a>     abc.debug(MSG);  
<a name="204" href="#204">204</a>     assertEquals(caRoot.counter, 1); 
<a name="205" href="#205">205</a>     assertEquals(caA.counter, 1); 
<a name="206" href="#206">206</a>     assertEquals(caABC.counter, 1);        
<a name="207" href="#207">207</a>     
<a name="208" href="#208">208</a>   }
<a name="209" href="#209">209</a> 
<a name="210" href="#210">210</a> 
<a name="211" href="#211">211</a>   <strong class="jxr_keyword">public</strong>
<a name="212" href="#212">212</a>   <strong class="jxr_keyword">void</strong> testDisable1() {
<a name="213" href="#213">213</a>     <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a> caRoot = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a>();
<a name="214" href="#214">214</a>     Logger root = Logger.getRootLogger();    
<a name="215" href="#215">215</a>     root.addAppender(caRoot);
<a name="216" href="#216">216</a> 
<a name="217" href="#217">217</a>     LoggerRepository h = LogManager.getLoggerRepository();
<a name="218" href="#218">218</a>     <em class="jxr_comment">//h.disableDebug();</em>
<a name="219" href="#219">219</a>     h.setThreshold((Level) Level.INFO);
<a name="220" href="#220">220</a>     assertEquals(caRoot.counter, 0);     
<a name="221" href="#221">221</a> 
<a name="222" href="#222">222</a>     root.debug(MSG); assertEquals(caRoot.counter, 0);  
<a name="223" href="#223">223</a>     root.info(MSG); assertEquals(caRoot.counter, 1);  
<a name="224" href="#224">224</a>     root.log(Level.WARN, MSG); assertEquals(caRoot.counter, 2);  
<a name="225" href="#225">225</a>     root.warn(MSG); assertEquals(caRoot.counter, 3);  
<a name="226" href="#226">226</a> 
<a name="227" href="#227">227</a>     <em class="jxr_comment">//h.disableInfo();</em>
<a name="228" href="#228">228</a>     h.setThreshold((Level) Level.WARN);
<a name="229" href="#229">229</a>     root.debug(MSG); assertEquals(caRoot.counter, 3);  
<a name="230" href="#230">230</a>     root.info(MSG); assertEquals(caRoot.counter, 3);  
<a name="231" href="#231">231</a>     root.log(Level.WARN, MSG); assertEquals(caRoot.counter, 4);  
<a name="232" href="#232">232</a>     root.error(MSG); assertEquals(caRoot.counter, 5);  
<a name="233" href="#233">233</a>     root.log(Level.ERROR, MSG); assertEquals(caRoot.counter, 6);  
<a name="234" href="#234">234</a> 
<a name="235" href="#235">235</a>     <em class="jxr_comment">//h.disableAll();</em>
<a name="236" href="#236">236</a>     h.setThreshold(Level.OFF);
<a name="237" href="#237">237</a>     root.debug(MSG); assertEquals(caRoot.counter, 6);  
<a name="238" href="#238">238</a>     root.info(MSG); assertEquals(caRoot.counter, 6);  
<a name="239" href="#239">239</a>     root.log(Level.WARN, MSG); assertEquals(caRoot.counter, 6);  
<a name="240" href="#240">240</a>     root.error(MSG); assertEquals(caRoot.counter, 6);  
<a name="241" href="#241">241</a>     root.log(Level.FATAL, MSG); assertEquals(caRoot.counter, 6);  
<a name="242" href="#242">242</a>     root.log(Level.FATAL, MSG); assertEquals(caRoot.counter, 6);  
<a name="243" href="#243">243</a> 
<a name="244" href="#244">244</a>     <em class="jxr_comment">//h.disable(Level.FATAL);</em>
<a name="245" href="#245">245</a>     h.setThreshold(Level.OFF);
<a name="246" href="#246">246</a>     root.debug(MSG); assertEquals(caRoot.counter, 6);  
<a name="247" href="#247">247</a>     root.info(MSG); assertEquals(caRoot.counter, 6);  
<a name="248" href="#248">248</a>     root.log(Level.WARN, MSG); assertEquals(caRoot.counter, 6);  
<a name="249" href="#249">249</a>     root.error(MSG); assertEquals(caRoot.counter, 6);
<a name="250" href="#250">250</a>     root.log(Level.ERROR, MSG); assertEquals(caRoot.counter, 6);  
<a name="251" href="#251">251</a>     root.log(Level.FATAL, MSG); assertEquals(caRoot.counter, 6);  
<a name="252" href="#252">252</a>   }
<a name="253" href="#253">253</a> 
<a name="254" href="#254">254</a> 
<a name="255" href="#255">255</a>   <strong class="jxr_keyword">public</strong>
<a name="256" href="#256">256</a>   <strong class="jxr_keyword">void</strong> testRB1() {
<a name="257" href="#257">257</a>     Logger root = Logger.getRootLogger(); 
<a name="258" href="#258">258</a>     root.setResourceBundle(rbUS);
<a name="259" href="#259">259</a>     ResourceBundle t = root.getResourceBundle();
<a name="260" href="#260">260</a>     assertSame(t, rbUS);
<a name="261" href="#261">261</a> 
<a name="262" href="#262">262</a>     Logger x = Logger.getLogger(<span class="jxr_string">"x"</span>);
<a name="263" href="#263">263</a>     Logger x_y = Logger.getLogger(<span class="jxr_string">"x.y"</span>);
<a name="264" href="#264">264</a>     Logger x_y_z = Logger.getLogger(<span class="jxr_string">"x.y.z"</span>);
<a name="265" href="#265">265</a> 
<a name="266" href="#266">266</a>     t = x.getResourceBundle();     assertSame(t, rbUS);
<a name="267" href="#267">267</a>     t = x_y.getResourceBundle();   assertSame(t, rbUS);
<a name="268" href="#268">268</a>     t = x_y_z.getResourceBundle(); assertSame(t, rbUS);
<a name="269" href="#269">269</a>   }
<a name="270" href="#270">270</a> 
<a name="271" href="#271">271</a>   <strong class="jxr_keyword">public</strong>
<a name="272" href="#272">272</a>   <strong class="jxr_keyword">void</strong> testRB2() {
<a name="273" href="#273">273</a>     Logger root = Logger.getRootLogger(); 
<a name="274" href="#274">274</a>     root.setResourceBundle(rbUS);
<a name="275" href="#275">275</a>     ResourceBundle t = root.getResourceBundle();
<a name="276" href="#276">276</a>     assertSame(t, rbUS);
<a name="277" href="#277">277</a> 
<a name="278" href="#278">278</a>     Logger x = Logger.getLogger(<span class="jxr_string">"x"</span>);
<a name="279" href="#279">279</a>     Logger x_y = Logger.getLogger(<span class="jxr_string">"x.y"</span>);
<a name="280" href="#280">280</a>     Logger x_y_z = Logger.getLogger(<span class="jxr_string">"x.y.z"</span>);
<a name="281" href="#281">281</a> 
<a name="282" href="#282">282</a>     x_y.setResourceBundle(rbFR);
<a name="283" href="#283">283</a>     t = x.getResourceBundle();     assertSame(t, rbUS);
<a name="284" href="#284">284</a>     t = x_y.getResourceBundle();   assertSame(t, rbFR);
<a name="285" href="#285">285</a>     t = x_y_z.getResourceBundle(); assertSame(t, rbFR);    
<a name="286" href="#286">286</a>   }
<a name="287" href="#287">287</a> 
<a name="288" href="#288">288</a> 
<a name="289" href="#289">289</a>   <strong class="jxr_keyword">public</strong>
<a name="290" href="#290">290</a>   <strong class="jxr_keyword">void</strong> testRB3() {
<a name="291" href="#291">291</a>     Logger root = Logger.getRootLogger(); 
<a name="292" href="#292">292</a>     root.setResourceBundle(rbUS);
<a name="293" href="#293">293</a>     ResourceBundle t = root.getResourceBundle();
<a name="294" href="#294">294</a>     assertSame(t, rbUS);
<a name="295" href="#295">295</a> 
<a name="296" href="#296">296</a>     Logger x = Logger.getLogger(<span class="jxr_string">"x"</span>);
<a name="297" href="#297">297</a>     Logger x_y = Logger.getLogger(<span class="jxr_string">"x.y"</span>);
<a name="298" href="#298">298</a>     Logger x_y_z = Logger.getLogger(<span class="jxr_string">"x.y.z"</span>);
<a name="299" href="#299">299</a> 
<a name="300" href="#300">300</a>     x_y.setResourceBundle(rbFR);
<a name="301" href="#301">301</a>     x_y_z.setResourceBundle(rbCH);
<a name="302" href="#302">302</a>     t = x.getResourceBundle();     assertSame(t, rbUS);
<a name="303" href="#303">303</a>     t = x_y.getResourceBundle();   assertSame(t, rbFR);
<a name="304" href="#304">304</a>     t = x_y_z.getResourceBundle(); assertSame(t, rbCH);    
<a name="305" href="#305">305</a>   }
<a name="306" href="#306">306</a> 
<a name="307" href="#307">307</a>   <strong class="jxr_keyword">public</strong>
<a name="308" href="#308">308</a>   <strong class="jxr_keyword">void</strong> testExists() {
<a name="309" href="#309">309</a>     Logger a = Logger.getLogger(<span class="jxr_string">"a"</span>);
<a name="310" href="#310">310</a>     Logger a_b = Logger.getLogger(<span class="jxr_string">"a.b"</span>);
<a name="311" href="#311">311</a>     Logger a_b_c = Logger.getLogger(<span class="jxr_string">"a.b.c"</span>);
<a name="312" href="#312">312</a>     
<a name="313" href="#313">313</a>     Logger t;
<a name="314" href="#314">314</a>     t = LogManager.exists(<span class="jxr_string">"xx"</span>);    assertNull(t);
<a name="315" href="#315">315</a>     t = LogManager.exists(<span class="jxr_string">"a"</span>);     assertSame(a, t);
<a name="316" href="#316">316</a>     t = LogManager.exists(<span class="jxr_string">"a.b"</span>);   assertSame(a_b, t);
<a name="317" href="#317">317</a>     t = LogManager.exists(<span class="jxr_string">"a.b.c"</span>); assertSame(a_b_c, t);
<a name="318" href="#318">318</a>   }
<a name="319" href="#319">319</a> 
<a name="320" href="#320">320</a>   <strong class="jxr_keyword">public</strong>
<a name="321" href="#321">321</a>   <strong class="jxr_keyword">void</strong> testHierarchy1() {
<a name="322" href="#322">322</a>     Hierarchy h = <strong class="jxr_keyword">new</strong> Hierarchy(<strong class="jxr_keyword">new</strong> RootLogger((Level) Level.ERROR));
<a name="323" href="#323">323</a>     Logger a0 = h.getLogger(<span class="jxr_string">"a"</span>);
<a name="324" href="#324">324</a>     assertEquals(<span class="jxr_string">"a"</span>, a0.getName());
<a name="325" href="#325">325</a>     assertNull(a0.getLevel());
<a name="326" href="#326">326</a>     assertSame(Level.ERROR, a0.getEffectiveLevel());
<a name="327" href="#327">327</a> 
<a name="328" href="#328">328</a>     Logger a1 = h.getLogger(<span class="jxr_string">"a"</span>);
<a name="329" href="#329">329</a>     assertSame(a0, a1);
<a name="330" href="#330">330</a>   }
<a name="331" href="#331">331</a> 
<a name="332" href="#332">332</a>   <em class="jxr_javadoccomment">/**</em>
<a name="333" href="#333">333</a> <em class="jxr_javadoccomment">   * Tests logger.trace(Object).</em>
<a name="334" href="#334">334</a> <em class="jxr_javadoccomment">   * @since 1.2.12</em>
<a name="335" href="#335">335</a> <em class="jxr_javadoccomment">   */</em>
<a name="336" href="#336">336</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTrace() {
<a name="337" href="#337">337</a>       <a href="../../../org/apache/log4j/VectorAppender.html">VectorAppender</a> appender = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/VectorAppender.html">VectorAppender</a>();
<a name="338" href="#338">338</a>       appender.activateOptions();
<a name="339" href="#339">339</a>       Logger root = Logger.getRootLogger();
<a name="340" href="#340">340</a>       root.addAppender(appender);
<a name="341" href="#341">341</a>       root.setLevel(Level.INFO);
<a name="342" href="#342">342</a> 
<a name="343" href="#343">343</a>       Logger tracer = Logger.getLogger(<span class="jxr_string">"com.example.Tracer"</span>);
<a name="344" href="#344">344</a>       tracer.setLevel(Level.TRACE);
<a name="345" href="#345">345</a> 
<a name="346" href="#346">346</a>       tracer.trace(<span class="jxr_string">"Message 1"</span>);
<a name="347" href="#347">347</a>       root.trace(<span class="jxr_string">"Discarded Message"</span>);
<a name="348" href="#348">348</a>       root.trace(<span class="jxr_string">"Discarded Message"</span>);
<a name="349" href="#349">349</a> 
<a name="350" href="#350">350</a>       Vector msgs = appender.getVector();
<a name="351" href="#351">351</a>       assertEquals(1, msgs.size());
<a name="352" href="#352">352</a>       LoggingEvent event = (LoggingEvent) msgs.elementAt(0);
<a name="353" href="#353">353</a>       assertEquals(Level.TRACE, event.getLevel());
<a name="354" href="#354">354</a>       assertEquals(<span class="jxr_string">"Message 1"</span>, event.getMessage());
<a name="355" href="#355">355</a>   }
<a name="356" href="#356">356</a> 
<a name="357" href="#357">357</a>     <em class="jxr_javadoccomment">/**</em>
<a name="358" href="#358">358</a> <em class="jxr_javadoccomment">     * Tests logger.trace(Object, Exception).</em>
<a name="359" href="#359">359</a> <em class="jxr_javadoccomment">     * @since 1.2.12</em>
<a name="360" href="#360">360</a> <em class="jxr_javadoccomment">     */</em>
<a name="361" href="#361">361</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testTraceWithException() {
<a name="362" href="#362">362</a>         <a href="../../../org/apache/log4j/VectorAppender.html">VectorAppender</a> appender = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/VectorAppender.html">VectorAppender</a>();
<a name="363" href="#363">363</a>         appender.activateOptions();
<a name="364" href="#364">364</a>         Logger root = Logger.getRootLogger();
<a name="365" href="#365">365</a>         root.addAppender(appender);
<a name="366" href="#366">366</a>         root.setLevel(Level.INFO);
<a name="367" href="#367">367</a> 
<a name="368" href="#368">368</a>         Logger tracer = Logger.getLogger(<span class="jxr_string">"com.example.Tracer"</span>);
<a name="369" href="#369">369</a>         tracer.setLevel(Level.TRACE);
<a name="370" href="#370">370</a>         NullPointerException ex = <strong class="jxr_keyword">new</strong> NullPointerException();
<a name="371" href="#371">371</a> 
<a name="372" href="#372">372</a>         tracer.trace(<span class="jxr_string">"Message 1"</span>, ex);
<a name="373" href="#373">373</a>         root.trace(<span class="jxr_string">"Discarded Message"</span>, ex);
<a name="374" href="#374">374</a>         root.trace(<span class="jxr_string">"Discarded Message"</span>, ex);
<a name="375" href="#375">375</a> 
<a name="376" href="#376">376</a>         Vector msgs = appender.getVector();
<a name="377" href="#377">377</a>         assertEquals(1, msgs.size());
<a name="378" href="#378">378</a>         LoggingEvent event = (LoggingEvent) msgs.elementAt(0);
<a name="379" href="#379">379</a>         assertEquals(Level.TRACE, event.getLevel());
<a name="380" href="#380">380</a>         assertEquals(<span class="jxr_string">"Message 1"</span>, event.getMessage());
<a name="381" href="#381">381</a>     }
<a name="382" href="#382">382</a> 
<a name="383" href="#383">383</a>     <em class="jxr_javadoccomment">/**</em>
<a name="384" href="#384">384</a> <em class="jxr_javadoccomment">     * Tests isTraceEnabled.</em>
<a name="385" href="#385">385</a> <em class="jxr_javadoccomment">     * @since 1.2.12</em>
<a name="386" href="#386">386</a> <em class="jxr_javadoccomment">     */</em>
<a name="387" href="#387">387</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testIsTraceEnabled() {
<a name="388" href="#388">388</a>         <a href="../../../org/apache/log4j/VectorAppender.html">VectorAppender</a> appender = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/VectorAppender.html">VectorAppender</a>();
<a name="389" href="#389">389</a>         appender.activateOptions();
<a name="390" href="#390">390</a>         Logger root = Logger.getRootLogger();
<a name="391" href="#391">391</a>         root.addAppender(appender);
<a name="392" href="#392">392</a>         root.setLevel(Level.INFO);
<a name="393" href="#393">393</a> 
<a name="394" href="#394">394</a>         Logger tracer = Logger.getLogger(<span class="jxr_string">"com.example.Tracer"</span>);
<a name="395" href="#395">395</a>         tracer.setLevel(Level.TRACE);
<a name="396" href="#396">396</a> 
<a name="397" href="#397">397</a>         assertTrue(tracer.isTraceEnabled());
<a name="398" href="#398">398</a>         assertFalse(root.isTraceEnabled());
<a name="399" href="#399">399</a>     }
<a name="400" href="#400">400</a> 
<a name="401" href="#401">401</a>   <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingHierarchyEventListener</a> implements HierarchyEventListener {
<a name="402" href="#402">402</a>       <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> addEventCount;
<a name="403" href="#403">403</a>       <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> removeEventCount;
<a name="404" href="#404">404</a> 
<a name="405" href="#405">405</a>       <strong class="jxr_keyword">public</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingHierarchyEventListener</a>() {
<a name="406" href="#406">406</a>           addEventCount = removeEventCount = 0;
<a name="407" href="#407">407</a>       }
<a name="408" href="#408">408</a>       <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addAppenderEvent(Category cat, Appender appender) {
<a name="409" href="#409">409</a>           addEventCount++;
<a name="410" href="#410">410</a>       }
<a name="411" href="#411">411</a> 
<a name="412" href="#412">412</a>       <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> removeAppenderEvent(Category cat, Appender appender) {
<a name="413" href="#413">413</a>           removeEventCount++;
<a name="414" href="#414">414</a>       }
<a name="415" href="#415">415</a> 
<a name="416" href="#416">416</a>       <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getAddEventCount() {
<a name="417" href="#417">417</a>           <strong class="jxr_keyword">return</strong> addEventCount;
<a name="418" href="#418">418</a>       }
<a name="419" href="#419">419</a>       <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> getRemoveEventCount() {
<a name="420" href="#420">420</a>           <strong class="jxr_keyword">return</strong> removeEventCount;
<a name="421" href="#421">421</a>       }
<a name="422" href="#422">422</a>   }
<a name="423" href="#423">423</a> 
<a name="424" href="#424">424</a> 
<a name="425" href="#425">425</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testAppenderEvent1() {
<a name="426" href="#426">426</a>       <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingHierarchyEventListener</a> listener = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingHierarchyEventListener</a>();
<a name="427" href="#427">427</a>       LogManager.getLoggerRepository().addHierarchyEventListener(listener);
<a name="428" href="#428">428</a>       <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a> appender = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a>();
<a name="429" href="#429">429</a>       Logger root =  Logger.getRootLogger();
<a name="430" href="#430">430</a>       root.addAppender(appender);
<a name="431" href="#431">431</a>       assertEquals(1, listener.getAddEventCount());
<a name="432" href="#432">432</a>       assertEquals(0, listener.getRemoveEventCount());
<a name="433" href="#433">433</a>       root.removeAppender(appender);
<a name="434" href="#434">434</a>       assertEquals(1, listener.getAddEventCount());
<a name="435" href="#435">435</a>       assertEquals(1, listener.getRemoveEventCount());
<a name="436" href="#436">436</a>   }
<a name="437" href="#437">437</a> 
<a name="438" href="#438">438</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testAppenderEvent2() {
<a name="439" href="#439">439</a>         <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingHierarchyEventListener</a> listener = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingHierarchyEventListener</a>();
<a name="440" href="#440">440</a>         LogManager.getLoggerRepository().addHierarchyEventListener(listener);
<a name="441" href="#441">441</a>         <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a> appender = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a>();
<a name="442" href="#442">442</a>         appender.setName(<span class="jxr_string">"A1"</span>);
<a name="443" href="#443">443</a>         Logger root =  Logger.getRootLogger();
<a name="444" href="#444">444</a>         root.addAppender(appender);
<a name="445" href="#445">445</a>         assertEquals(1, listener.getAddEventCount());
<a name="446" href="#446">446</a>         assertEquals(0, listener.getRemoveEventCount());
<a name="447" href="#447">447</a>         root.removeAppender(appender.getName());
<a name="448" href="#448">448</a>         assertEquals(1, listener.getAddEventCount());
<a name="449" href="#449">449</a>         assertEquals(1, listener.getRemoveEventCount());
<a name="450" href="#450">450</a>   }
<a name="451" href="#451">451</a> 
<a name="452" href="#452">452</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testAppenderEvent3() {
<a name="453" href="#453">453</a>           <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingHierarchyEventListener</a> listener = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingHierarchyEventListener</a>();
<a name="454" href="#454">454</a>           LogManager.getLoggerRepository().addHierarchyEventListener(listener);
<a name="455" href="#455">455</a>           <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a> appender = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a>();
<a name="456" href="#456">456</a>           Logger root =  Logger.getRootLogger();
<a name="457" href="#457">457</a>           root.addAppender(appender);
<a name="458" href="#458">458</a>           assertEquals(1, listener.getAddEventCount());
<a name="459" href="#459">459</a>           assertEquals(0, listener.getRemoveEventCount());
<a name="460" href="#460">460</a>           root.removeAllAppenders();
<a name="461" href="#461">461</a>           assertEquals(1, listener.getAddEventCount());
<a name="462" href="#462">462</a>           assertEquals(1, listener.getRemoveEventCount());
<a name="463" href="#463">463</a>     }
<a name="464" href="#464">464</a> 
<a name="465" href="#465">465</a> 
<a name="466" href="#466">466</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> testAppenderEvent4() {
<a name="467" href="#467">467</a>             <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingHierarchyEventListener</a> listener = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingHierarchyEventListener</a>();
<a name="468" href="#468">468</a>             LogManager.getLoggerRepository().addHierarchyEventListener(listener);
<a name="469" href="#469">469</a>             <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a> appender = <strong class="jxr_keyword">new</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a>();
<a name="470" href="#470">470</a>             Logger root =  Logger.getRootLogger();
<a name="471" href="#471">471</a>             root.addAppender(appender);
<a name="472" href="#472">472</a>             assertEquals(1, listener.getAddEventCount());
<a name="473" href="#473">473</a>             assertEquals(0, listener.getRemoveEventCount());
<a name="474" href="#474">474</a>             LogManager.resetConfiguration();
<a name="475" href="#475">475</a>             assertEquals(1, listener.getAddEventCount());
<a name="476" href="#476">476</a>             assertEquals(1, listener.getRemoveEventCount());
<a name="477" href="#477">477</a>       }
<a name="478" href="#478">478</a> 
<a name="479" href="#479">479</a>   <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">class</strong> <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a> <strong class="jxr_keyword">extends</strong> AppenderSkeleton {
<a name="480" href="#480">480</a> 
<a name="481" href="#481">481</a>     <strong class="jxr_keyword">int</strong> counter;
<a name="482" href="#482">482</a> 
<a name="483" href="#483">483</a>     <a href="../../../org/apache/log4j/LoggerTestCase.html">CountingAppender</a>() {
<a name="484" href="#484">484</a>       counter = 0;
<a name="485" href="#485">485</a>     }
<a name="486" href="#486">486</a>     <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> close() {
<a name="487" href="#487">487</a>     }
<a name="488" href="#488">488</a> 
<a name="489" href="#489">489</a>     <strong class="jxr_keyword">public</strong>
<a name="490" href="#490">490</a>     <strong class="jxr_keyword">void</strong> append(LoggingEvent event) {
<a name="491" href="#491">491</a>       counter++;
<a name="492" href="#492">492</a>     }
<a name="493" href="#493">493</a>     
<a name="494" href="#494">494</a>     <strong class="jxr_keyword">public</strong> 
<a name="495" href="#495">495</a>     <strong class="jxr_keyword">boolean</strong> requiresLayout() {
<a name="496" href="#496">496</a>       <strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
<a name="497" href="#497">497</a>     }
<a name="498" href="#498">498</a>   }
<a name="499" href="#499">499</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

