/apache-log4j-1.2.17/tests/src/java/org/apache/log4j/varia/LevelMatchFilterTestCase.java
Java | 147 lines | 86 code | 30 blank | 31 comment | 2 complexity | 8fe787a0908dd0ba0603cce24a72f5f5 MD5 | raw file
Possible License(s): Apache-2.0
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18package org.apache.log4j.varia;
19
20import junit.framework.TestCase;
21import junit.framework.TestSuite;
22import junit.framework.Test;
23
24import org.apache.log4j.Logger;
25import org.apache.log4j.Level;
26import org.apache.log4j.Appender;
27import org.apache.log4j.FileAppender;
28import org.apache.log4j.Layout;
29import org.apache.log4j.SimpleLayout;
30import org.apache.log4j.varia.LevelMatchFilter;
31import org.apache.log4j.varia.DenyAllFilter;
32
33import org.apache.log4j.util.Transformer;
34import org.apache.log4j.util.Compare;
35import org.apache.log4j.util.LineNumberFilter;
36
37/**
38 Test case for varia/LevelMatchFilter.java.
39 */
40public class LevelMatchFilterTestCase extends TestCase {
41
42 static String ACCEPT_FILE = "output/LevelMatchFilter_accept";
43 static String ACCEPT_FILTERED = "output/LevelMatchFilter_accept_filtered";
44 static String ACCEPT_WITNESS = "witness/LevelMatchFilter_accept";
45
46 static String DENY_FILE = "output/LevelMatchFilter_deny";
47 static String DENY_FILTERED = "output/LevelMatchFilter_deny_filtered";
48 static String DENY_WITNESS = "witness/LevelMatchFilter_deny";
49
50 Logger root;
51 Logger logger;
52
53 public LevelMatchFilterTestCase(String name) {
54 super(name);
55 }
56
57 public void setUp() {
58 root = Logger.getRootLogger();
59 root.removeAllAppenders();
60 }
61
62 public void tearDown() {
63 root.getLoggerRepository().resetConfiguration();
64 }
65
66 public void accept() throws Exception {
67
68 // set up appender
69 Layout layout = new SimpleLayout();
70 Appender appender = new FileAppender(layout, ACCEPT_FILE, false);
71
72 // create LevelMatchFilter
73 LevelMatchFilter matchFilter = new LevelMatchFilter();
74
75 // attach match filter to appender
76 appender.addFilter(matchFilter);
77
78 // attach DenyAllFilter to end of filter chain to deny neutral
79 // (non matching) messages
80 appender.addFilter(new DenyAllFilter());
81
82 // set appender on root and set level to debug
83 root.addAppender(appender);
84 root.setLevel(Level.TRACE);
85
86 Level[] levelArray = new Level[] {Level.TRACE, Level.DEBUG, Level.INFO, Level.WARN,
87 Level.ERROR, Level.FATAL};
88 for (int x = 0; x < levelArray.length; x++) {
89 // set the level to match
90 matchFilter.setLevelToMatch(levelArray[x].toString());
91 common("pass " + x + "; filter set to accept only "
92 + levelArray[x].toString() + " msgs");
93 }
94
95 Transformer.transform(ACCEPT_FILE, ACCEPT_FILTERED, new LineNumberFilter());
96 assertTrue(Compare.compare(ACCEPT_FILTERED, ACCEPT_WITNESS));
97 }
98
99 public void deny() throws Exception {
100
101 // set up appender
102 Layout layout = new SimpleLayout();
103 Appender appender = new FileAppender(layout, DENY_FILE, false);
104
105 // create LevelMatchFilter, set to deny matches
106 LevelMatchFilter matchFilter = new LevelMatchFilter();
107 matchFilter.setAcceptOnMatch(false);
108
109 // attach match filter to appender
110 appender.addFilter(matchFilter);
111
112 // set appender on root and set level to debug
113 root.addAppender(appender);
114 root.setLevel(Level.TRACE);
115
116 Level[] levelArray = new Level[] {Level.TRACE, Level.DEBUG, Level.INFO, Level.WARN,
117 Level.ERROR, Level.FATAL};
118 for (int x = 0; x < levelArray.length; x++) {
119 // set the level to match
120 matchFilter.setLevelToMatch(levelArray[x].toString());
121 common("pass " + x + "; filter set to deny only " + levelArray[x].toString()
122 + " msgs");
123 }
124
125 Transformer.transform(DENY_FILE, DENY_FILTERED, new LineNumberFilter());
126 assertTrue(Compare.compare(DENY_FILTERED, DENY_WITNESS));
127 }
128
129
130 void common(String msg) {
131 Logger logger = Logger.getLogger("test");
132 logger.trace(msg);
133 logger.debug(msg);
134 logger.info(msg);
135 logger.warn(msg);
136 logger.error(msg);
137 logger.fatal(msg);
138 }
139
140 public static Test suite() {
141 TestSuite suite = new TestSuite();
142 suite.addTest(new LevelMatchFilterTestCase("accept"));
143 suite.addTest(new LevelMatchFilterTestCase("deny"));
144 return suite;
145 }
146
147}