<!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>LevelMatchFilterTestCase 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.varia;
<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> junit.framework.TestSuite;
<a name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> junit.framework.Test;
<a name="23" href="#23">23</a>  
<a name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.Logger;
<a name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.Level;
<a name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.Appender;
<a name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.FileAppender;
<a name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.Layout;
<a name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.SimpleLayout;
<a name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.varia.LevelMatchFilter;
<a name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.varia.DenyAllFilter;
<a name="32" href="#32">32</a>  
<a name="33" href="#33">33</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.util.Transformer;
<a name="34" href="#34">34</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.util.Compare;
<a name="35" href="#35">35</a>  <strong class="jxr_keyword">import</strong> org.apache.log4j.util.LineNumberFilter;
<a name="36" href="#36">36</a>  
<a name="37" href="#37">37</a>  <em class="jxr_javadoccomment">/**</em>
<a name="38" href="#38">38</a>  <em class="jxr_javadoccomment">   Test case for varia/LevelMatchFilter.java.</em>
<a name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> */</em>
<a name="40" href="#40">40</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../org/apache/log4j/varia/LevelMatchFilterTestCase.html">LevelMatchFilterTestCase</a> <strong class="jxr_keyword">extends</strong> TestCase {
<a name="41" href="#41">41</a>    
<a name="42" href="#42">42</a>    <strong class="jxr_keyword">static</strong> String ACCEPT_FILE     = <span class="jxr_string">"output/LevelMatchFilter_accept"</span>;
<a name="43" href="#43">43</a>    <strong class="jxr_keyword">static</strong> String ACCEPT_FILTERED = <span class="jxr_string">"output/LevelMatchFilter_accept_filtered"</span>;
<a name="44" href="#44">44</a>    <strong class="jxr_keyword">static</strong> String ACCEPT_WITNESS  = <span class="jxr_string">"witness/LevelMatchFilter_accept"</span>;
<a name="45" href="#45">45</a>  
<a name="46" href="#46">46</a>    <strong class="jxr_keyword">static</strong> String DENY_FILE       = <span class="jxr_string">"output/LevelMatchFilter_deny"</span>;
<a name="47" href="#47">47</a>    <strong class="jxr_keyword">static</strong> String DENY_FILTERED   = <span class="jxr_string">"output/LevelMatchFilter_deny_filtered"</span>;
<a name="48" href="#48">48</a>    <strong class="jxr_keyword">static</strong> String DENY_WITNESS    = <span class="jxr_string">"witness/LevelMatchFilter_deny"</span>;
<a name="49" href="#49">49</a>  
<a name="50" href="#50">50</a>    Logger root; 
<a name="51" href="#51">51</a>    Logger logger;
<a name="52" href="#52">52</a>  
<a name="53" href="#53">53</a>    <strong class="jxr_keyword">public</strong> <a href="../../../../org/apache/log4j/varia/LevelMatchFilterTestCase.html">LevelMatchFilterTestCase</a>(String name) {
<a name="54" href="#54">54</a>      <strong class="jxr_keyword">super</strong>(name);
<a name="55" href="#55">55</a>    }
<a name="56" href="#56">56</a>  
<a name="57" href="#57">57</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setUp() {
<a name="58" href="#58">58</a>      root = Logger.getRootLogger();
<a name="59" href="#59">59</a>      root.removeAllAppenders();
<a name="60" href="#60">60</a>    }
<a name="61" href="#61">61</a>  
<a name="62" href="#62">62</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> tearDown() {  
<a name="63" href="#63">63</a>      root.getLoggerRepository().resetConfiguration();
<a name="64" href="#64">64</a>    }
<a name="65" href="#65">65</a>  
<a name="66" href="#66">66</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> accept() <strong class="jxr_keyword">throws</strong> Exception {
<a name="67" href="#67">67</a>      
<a name="68" href="#68">68</a>      <em class="jxr_comment">// set up appender</em>
<a name="69" href="#69">69</a>      Layout layout = <strong class="jxr_keyword">new</strong> SimpleLayout();
<a name="70" href="#70">70</a>      Appender appender = <strong class="jxr_keyword">new</strong> FileAppender(layout, ACCEPT_FILE, false);
<a name="71" href="#71">71</a>      
<a name="72" href="#72">72</a>      <em class="jxr_comment">// create LevelMatchFilter</em>
<a name="73" href="#73">73</a>      LevelMatchFilter matchFilter = <strong class="jxr_keyword">new</strong> LevelMatchFilter();
<a name="74" href="#74">74</a>   
<a name="75" href="#75">75</a>       <em class="jxr_comment">// attach match filter to appender</em>
<a name="76" href="#76">76</a>      appender.addFilter(matchFilter);
<a name="77" href="#77">77</a>     
<a name="78" href="#78">78</a>      <em class="jxr_comment">// attach DenyAllFilter to end of filter chain to deny neutral</em>
<a name="79" href="#79">79</a>      <em class="jxr_comment">// (non matching) messages</em>
<a name="80" href="#80">80</a>      appender.addFilter(<strong class="jxr_keyword">new</strong> DenyAllFilter());
<a name="81" href="#81">81</a>          
<a name="82" href="#82">82</a>      <em class="jxr_comment">// set appender on root and set level to debug</em>
<a name="83" href="#83">83</a>      root.addAppender(appender);
<a name="84" href="#84">84</a>      root.setLevel(Level.TRACE);
<a name="85" href="#85">85</a>      
<a name="86" href="#86">86</a>      Level[] levelArray = <strong class="jxr_keyword">new</strong> Level[] {Level.TRACE, Level.DEBUG, Level.INFO, Level.WARN, 
<a name="87" href="#87">87</a>  				      Level.ERROR, Level.FATAL};
<a name="88" href="#88">88</a>      <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> x = 0; x &lt; levelArray.length; x++) {
<a name="89" href="#89">89</a>        <em class="jxr_comment">// set the level to match</em>
<a name="90" href="#90">90</a>        matchFilter.setLevelToMatch(levelArray[x].toString());
<a name="91" href="#91">91</a>        common(<span class="jxr_string">"pass "</span> + x + <span class="jxr_string">"; filter set to accept only "</span> 
<a name="92" href="#92">92</a>  	     + levelArray[x].toString() + <span class="jxr_string">" msgs"</span>);
<a name="93" href="#93">93</a>      }
<a name="94" href="#94">94</a>      
<a name="95" href="#95">95</a>      Transformer.transform(ACCEPT_FILE, ACCEPT_FILTERED, <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/log4j/util/LineNumberFilter.html">LineNumberFilter</a>());
<a name="96" href="#96">96</a>      assertTrue(Compare.compare(ACCEPT_FILTERED, ACCEPT_WITNESS));
<a name="97" href="#97">97</a>    }
<a name="98" href="#98">98</a>  
<a name="99" href="#99">99</a>    <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> deny() <strong class="jxr_keyword">throws</strong> Exception {
<a name="100" href="#100">100</a>     
<a name="101" href="#101">101</a>     <em class="jxr_comment">// set up appender</em>
<a name="102" href="#102">102</a>     Layout layout = <strong class="jxr_keyword">new</strong> SimpleLayout();
<a name="103" href="#103">103</a>     Appender appender = <strong class="jxr_keyword">new</strong> FileAppender(layout, DENY_FILE, false);
<a name="104" href="#104">104</a>     
<a name="105" href="#105">105</a>     <em class="jxr_comment">// create LevelMatchFilter, set to deny matches</em>
<a name="106" href="#106">106</a>     LevelMatchFilter matchFilter = <strong class="jxr_keyword">new</strong> LevelMatchFilter();
<a name="107" href="#107">107</a>     matchFilter.setAcceptOnMatch(false);
<a name="108" href="#108">108</a>  
<a name="109" href="#109">109</a>      <em class="jxr_comment">// attach match filter to appender</em>
<a name="110" href="#110">110</a>     appender.addFilter(matchFilter);
<a name="111" href="#111">111</a>            
<a name="112" href="#112">112</a>     <em class="jxr_comment">// set appender on root and set level to debug</em>
<a name="113" href="#113">113</a>     root.addAppender(appender);
<a name="114" href="#114">114</a>     root.setLevel(Level.TRACE);
<a name="115" href="#115">115</a>     
<a name="116" href="#116">116</a>     Level[] levelArray = <strong class="jxr_keyword">new</strong> Level[] {Level.TRACE, Level.DEBUG, Level.INFO, Level.WARN,
<a name="117" href="#117">117</a> 				      Level.ERROR, Level.FATAL};
<a name="118" href="#118">118</a>     <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> x = 0; x &lt; levelArray.length; x++) {
<a name="119" href="#119">119</a>       <em class="jxr_comment">// set the level to match</em>
<a name="120" href="#120">120</a>       matchFilter.setLevelToMatch(levelArray[x].toString());
<a name="121" href="#121">121</a>       common(<span class="jxr_string">"pass "</span> + x + <span class="jxr_string">"; filter set to deny only "</span> + levelArray[x].toString()
<a name="122" href="#122">122</a>               + <span class="jxr_string">" msgs"</span>);
<a name="123" href="#123">123</a>     }
<a name="124" href="#124">124</a>     
<a name="125" href="#125">125</a>     Transformer.transform(DENY_FILE, DENY_FILTERED, <strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/log4j/util/LineNumberFilter.html">LineNumberFilter</a>());
<a name="126" href="#126">126</a>     assertTrue(Compare.compare(DENY_FILTERED, DENY_WITNESS));
<a name="127" href="#127">127</a>   }
<a name="128" href="#128">128</a> 
<a name="129" href="#129">129</a> 
<a name="130" href="#130">130</a>   <strong class="jxr_keyword">void</strong> common(String msg) {
<a name="131" href="#131">131</a>     Logger logger = Logger.getLogger(<span class="jxr_string">"test"</span>);
<a name="132" href="#132">132</a>     logger.trace(msg);
<a name="133" href="#133">133</a>     logger.debug(msg);
<a name="134" href="#134">134</a>     logger.info(msg);
<a name="135" href="#135">135</a>     logger.warn(msg);
<a name="136" href="#136">136</a>     logger.error(msg);
<a name="137" href="#137">137</a>     logger.fatal(msg);
<a name="138" href="#138">138</a>   }
<a name="139" href="#139">139</a> 
<a name="140" href="#140">140</a>   <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> Test suite() {
<a name="141" href="#141">141</a>     TestSuite suite = <strong class="jxr_keyword">new</strong> TestSuite();
<a name="142" href="#142">142</a>     suite.addTest(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/log4j/varia/LevelMatchFilterTestCase.html">LevelMatchFilterTestCase</a>(<span class="jxr_string">"accept"</span>));
<a name="143" href="#143">143</a>     suite.addTest(<strong class="jxr_keyword">new</strong> <a href="../../../../org/apache/log4j/varia/LevelMatchFilterTestCase.html">LevelMatchFilterTestCase</a>(<span class="jxr_string">"deny"</span>));
<a name="144" href="#144">144</a>     <strong class="jxr_keyword">return</strong> suite;
<a name="145" href="#145">145</a>   }
<a name="146" href="#146">146</a> 
<a name="147" href="#147">147</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

