1
2
3
4
5
6
7
8
9
10 package ch.qos.logback.classic.joran;
11
12 import static org.junit.Assert.assertFalse;
13 import static org.junit.Assert.assertNotNull;
14 import static org.junit.Assert.assertTrue;
15
16 import java.util.Map;
17
18 import org.junit.Test;
19 import org.slf4j.Marker;
20 import org.slf4j.MarkerFactory;
21
22 import ch.qos.logback.classic.Level;
23 import ch.qos.logback.classic.Logger;
24 import ch.qos.logback.classic.LoggerContext;
25 import ch.qos.logback.classic.boolex.JaninoEventEvaluator;
26 import ch.qos.logback.classic.spi.LoggingEvent;
27 import ch.qos.logback.classic.util.TeztConstants;
28 import ch.qos.logback.core.CoreConstants;
29 import ch.qos.logback.core.boolex.EvaluationException;
30 import ch.qos.logback.core.joran.spi.JoranException;
31
32
33 public class EvaluatorJoranTest {
34
35 @Test
36 public void testSimpleEvaluator() throws NullPointerException, EvaluationException, JoranException {
37 JoranConfigurator jc = new JoranConfigurator();
38 LoggerContext loggerContext = new LoggerContext();
39 jc.setContext(loggerContext);
40 jc.doConfigure(TeztConstants.TEST_DIR_PREFIX + "input/joran/simpleEvaluator.xml");
41
42
43 Map evalMap = (Map) loggerContext.getObject(CoreConstants.EVALUATOR_MAP);
44 assertNotNull(evalMap);
45 JaninoEventEvaluator evaluator = (JaninoEventEvaluator) evalMap.get("msgEval");
46 assertNotNull(evaluator);
47
48 Logger logger = loggerContext.getLogger("xx");
49 LoggingEvent event0 = new LoggingEvent("foo", logger, Level.DEBUG, "Hello world", null, null);
50 assertTrue(evaluator.evaluate(event0));
51
52 LoggingEvent event1 = new LoggingEvent("foo", logger, Level.DEBUG, "random blurb", null, null);
53 assertFalse(evaluator.evaluate(event1));
54 }
55
56 @Test
57 public void testIgnoreMarker() throws NullPointerException, EvaluationException, JoranException {
58 JoranConfigurator jc = new JoranConfigurator();
59 LoggerContext loggerContext = new LoggerContext();
60 jc.setContext(loggerContext);
61 jc.doConfigure(TeztConstants.TEST_DIR_PREFIX + "input/joran/ignore.xml");
62
63 Map evalMap = (Map) loggerContext.getObject(CoreConstants.EVALUATOR_MAP);
64 assertNotNull(evalMap);
65
66 Logger logger = loggerContext.getLogger("xx");
67
68 JaninoEventEvaluator evaluator = (JaninoEventEvaluator) evalMap.get("IGNORE_EVAL");
69 LoggingEvent event = new LoggingEvent("foo", logger, Level.DEBUG, "Hello world",null, null);
70
71 Marker ignoreMarker = MarkerFactory.getMarker("IGNORE");
72 event.setMarker(ignoreMarker);
73 assertTrue(evaluator.evaluate(event));
74
75 logger.debug("hello", new Exception("test"));
76 logger.debug(ignoreMarker, "hello ignore", new Exception("test"));
77
78
79
80
81 }
82
83 @Test
84 public void testMultipleConditionsInExpression() throws NullPointerException, EvaluationException {
85 LoggerContext loggerContext = new LoggerContext();
86 Logger logger = loggerContext.getLogger("xx");
87 JaninoEventEvaluator ee = new JaninoEventEvaluator();
88 ee.setName("testEval");
89 ee.setContext(loggerContext);
90
91
92 ee.setExpression("message.contains(\"stacktrace\") && message.contains(\"logging\")");
93 ee.start();
94
95
96 String message = "stacktrace bla bla logging";
97 LoggingEvent event = new LoggingEvent(this.getClass().getName(), logger, Level.DEBUG, message, null, null);
98
99 assertTrue(ee.evaluate(event));
100 }
101 }