PageRenderTime 43ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/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. package org.apache.log4j.varia;
  18. import junit.framework.TestCase;
  19. import junit.framework.TestSuite;
  20. import junit.framework.Test;
  21. import org.apache.log4j.Logger;
  22. import org.apache.log4j.Level;
  23. import org.apache.log4j.Appender;
  24. import org.apache.log4j.FileAppender;
  25. import org.apache.log4j.Layout;
  26. import org.apache.log4j.SimpleLayout;
  27. import org.apache.log4j.varia.LevelMatchFilter;
  28. import org.apache.log4j.varia.DenyAllFilter;
  29. import org.apache.log4j.util.Transformer;
  30. import org.apache.log4j.util.Compare;
  31. import org.apache.log4j.util.LineNumberFilter;
  32. /**
  33. Test case for varia/LevelMatchFilter.java.
  34. */
  35. public class LevelMatchFilterTestCase extends TestCase {
  36. static String ACCEPT_FILE = "output/LevelMatchFilter_accept";
  37. static String ACCEPT_FILTERED = "output/LevelMatchFilter_accept_filtered";
  38. static String ACCEPT_WITNESS = "witness/LevelMatchFilter_accept";
  39. static String DENY_FILE = "output/LevelMatchFilter_deny";
  40. static String DENY_FILTERED = "output/LevelMatchFilter_deny_filtered";
  41. static String DENY_WITNESS = "witness/LevelMatchFilter_deny";
  42. Logger root;
  43. Logger logger;
  44. public LevelMatchFilterTestCase(String name) {
  45. super(name);
  46. }
  47. public void setUp() {
  48. root = Logger.getRootLogger();
  49. root.removeAllAppenders();
  50. }
  51. public void tearDown() {
  52. root.getLoggerRepository().resetConfiguration();
  53. }
  54. public void accept() throws Exception {
  55. // set up appender
  56. Layout layout = new SimpleLayout();
  57. Appender appender = new FileAppender(layout, ACCEPT_FILE, false);
  58. // create LevelMatchFilter
  59. LevelMatchFilter matchFilter = new LevelMatchFilter();
  60. // attach match filter to appender
  61. appender.addFilter(matchFilter);
  62. // attach DenyAllFilter to end of filter chain to deny neutral
  63. // (non matching) messages
  64. appender.addFilter(new DenyAllFilter());
  65. // set appender on root and set level to debug
  66. root.addAppender(appender);
  67. root.setLevel(Level.TRACE);
  68. Level[] levelArray = new Level[] {Level.TRACE, Level.DEBUG, Level.INFO, Level.WARN,
  69. Level.ERROR, Level.FATAL};
  70. for (int x = 0; x < levelArray.length; x++) {
  71. // set the level to match
  72. matchFilter.setLevelToMatch(levelArray[x].toString());
  73. common("pass " + x + "; filter set to accept only "
  74. + levelArray[x].toString() + " msgs");
  75. }
  76. Transformer.transform(ACCEPT_FILE, ACCEPT_FILTERED, new LineNumberFilter());
  77. assertTrue(Compare.compare(ACCEPT_FILTERED, ACCEPT_WITNESS));
  78. }
  79. public void deny() throws Exception {
  80. // set up appender
  81. Layout layout = new SimpleLayout();
  82. Appender appender = new FileAppender(layout, DENY_FILE, false);
  83. // create LevelMatchFilter, set to deny matches
  84. LevelMatchFilter matchFilter = new LevelMatchFilter();
  85. matchFilter.setAcceptOnMatch(false);
  86. // attach match filter to appender
  87. appender.addFilter(matchFilter);
  88. // set appender on root and set level to debug
  89. root.addAppender(appender);
  90. root.setLevel(Level.TRACE);
  91. Level[] levelArray = new Level[] {Level.TRACE, Level.DEBUG, Level.INFO, Level.WARN,
  92. Level.ERROR, Level.FATAL};
  93. for (int x = 0; x < levelArray.length; x++) {
  94. // set the level to match
  95. matchFilter.setLevelToMatch(levelArray[x].toString());
  96. common("pass " + x + "; filter set to deny only " + levelArray[x].toString()
  97. + " msgs");
  98. }
  99. Transformer.transform(DENY_FILE, DENY_FILTERED, new LineNumberFilter());
  100. assertTrue(Compare.compare(DENY_FILTERED, DENY_WITNESS));
  101. }
  102. void common(String msg) {
  103. Logger logger = Logger.getLogger("test");
  104. logger.trace(msg);
  105. logger.debug(msg);
  106. logger.info(msg);
  107. logger.warn(msg);
  108. logger.error(msg);
  109. logger.fatal(msg);
  110. }
  111. public static Test suite() {
  112. TestSuite suite = new TestSuite();
  113. suite.addTest(new LevelMatchFilterTestCase("accept"));
  114. suite.addTest(new LevelMatchFilterTestCase("deny"));
  115. return suite;
  116. }
  117. }