The branch, master has been updated
via b3f2333b924d4c811059863e92c5b7742580fe47 (commit)
from baba96b8e2a916ecee6d3fda41c7040535f5b175 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.qos.ch/gitweb/?p=logback.git;a=commit;h=b3f2333b924d4c811059863e92c5b7742580fe47
http://github.com/ceki/logback/commit/b3f2333b924d4c811059863e92c5b7742580fe47
commit b3f2333b924d4c811059863e92c5b7742580fe47
Author: Ceki Gulcu <[email protected]>
Date: Tue Nov 10 22:20:58 2009 +0100
- minor adjustments in the comments
- editing of filters.html
diff --git
a/logback-classic/src/main/java/ch/qos/logback/classic/boolex/JaninoEventEvaluator.java
b/logback-classic/src/main/java/ch/qos/logback/classic/boolex/JaninoEventEvaluator.java
index 232c689..0bfd020 100644
---
a/logback-classic/src/main/java/ch/qos/logback/classic/boolex/JaninoEventEvaluator.java
+++
b/logback-classic/src/main/java/ch/qos/logback/classic/boolex/JaninoEventEvaluator.java
@@ -28,22 +28,20 @@ import ch.qos.logback.core.CoreConstants;
import ch.qos.logback.core.boolex.JaninoEventEvaluatorBase;
import ch.qos.logback.core.boolex.Matcher;
+public class JaninoEventEvaluator extends
+ JaninoEventEvaluatorBase<ILoggingEvent> {
-
-public class JaninoEventEvaluator extends
JaninoEventEvaluatorBase<ILoggingEvent> {
-
-
public final static String IMPORT_LEVEL = "import
ch.qos.logback.classic.Level;\r\n";
-
+
public final static List<String> DEFAULT_PARAM_NAME_LIST = new
ArrayList<String>();
public final static List<Class> DEFAULT_PARAM_TYPE_LIST = new
ArrayList<Class>();
-
+
static {
DEFAULT_PARAM_NAME_LIST.add("DEBUG");
DEFAULT_PARAM_NAME_LIST.add("INFO");
DEFAULT_PARAM_NAME_LIST.add("WARN");
DEFAULT_PARAM_NAME_LIST.add("ERROR");
-
+
DEFAULT_PARAM_NAME_LIST.add("event");
DEFAULT_PARAM_NAME_LIST.add("message");
@@ -56,12 +54,12 @@ public class JaninoEventEvaluator extends
JaninoEventEvaluatorBase<ILoggingEvent
DEFAULT_PARAM_NAME_LIST.add("mdc");
DEFAULT_PARAM_NAME_LIST.add("throwableProxy");
DEFAULT_PARAM_NAME_LIST.add("throwable");
-
+
DEFAULT_PARAM_TYPE_LIST.add(int.class);
DEFAULT_PARAM_TYPE_LIST.add(int.class);
DEFAULT_PARAM_TYPE_LIST.add(int.class);
DEFAULT_PARAM_TYPE_LIST.add(int.class);
-
+
DEFAULT_PARAM_TYPE_LIST.add(ILoggingEvent.class);
DEFAULT_PARAM_TYPE_LIST.add(String.class);
DEFAULT_PARAM_TYPE_LIST.add(String.class);
@@ -74,11 +72,11 @@ public class JaninoEventEvaluator extends
JaninoEventEvaluatorBase<ILoggingEvent
DEFAULT_PARAM_TYPE_LIST.add(IThrowableProxy.class);
DEFAULT_PARAM_TYPE_LIST.add(Throwable.class);
}
-
-
+
public JaninoEventEvaluator() {
-
+
}
+
protected String getDecoratedExpression() {
return IMPORT_LEVEL + getExpression();
}
@@ -87,18 +85,18 @@ public class JaninoEventEvaluator extends
JaninoEventEvaluatorBase<ILoggingEvent
List<String> fullNameList = new ArrayList<String>();
fullNameList.addAll(DEFAULT_PARAM_NAME_LIST);
- for(int i = 0; i < matcherList.size(); i++) {
+ for (int i = 0; i < matcherList.size(); i++) {
Matcher m = (Matcher) matcherList.get(i);
fullNameList.add(m.getName());
}
-
+
return (String[]) fullNameList.toArray(CoreConstants.EMPTY_STRING_ARRAY);
}
protected Class[] getParameterTypes() {
List<Class> fullTypeList = new ArrayList<Class>();
fullTypeList.addAll(DEFAULT_PARAM_TYPE_LIST);
- for(int i = 0; i < matcherList.size(); i++) {
+ for (int i = 0; i < matcherList.size(); i++) {
fullTypeList.add(Matcher.class);
}
return (Class[]) fullTypeList.toArray(CoreConstants.EMPTY_CLASS_ARRAY);
@@ -106,30 +104,34 @@ public class JaninoEventEvaluator extends
JaninoEventEvaluatorBase<ILoggingEvent
protected Object[] getParameterValues(ILoggingEvent loggingEvent) {
final int matcherListSize = matcherList.size();
-
+
int i = 0;
- Object[] values = new
Object[DEFAULT_PARAM_NAME_LIST.size()+matcherListSize];
+ Object[] values = new Object[DEFAULT_PARAM_NAME_LIST.size()
+ + matcherListSize];
values[i++] = Level.DEBUG_INTEGER;
values[i++] = Level.INFO_INTEGER;
values[i++] = Level.WARN_INTEGER;
values[i++] = Level.ERROR_INTEGER;
-
+
values[i++] = loggingEvent;
- values[i++] = loggingEvent.getMessage();
- values[i++] = loggingEvent.getFormattedMessage();
+ values[i++] = loggingEvent.getMessage();
+ values[i++] = loggingEvent.getFormattedMessage();
values[i++] = loggingEvent.getLoggerName();
values[i++] = loggingEvent.getLoggerContextVO();
values[i++] = loggingEvent.getLevel().toInteger();
values[i++] = new Long(loggingEvent.getTimeStamp());
+ // In order to avoid NullPointerException, we could push a dummy marker if
+ // the event's marker is null. However, this would surprise user who
+ // expect to see a null marker instead of a dummy one.
values[i++] = loggingEvent.getMarker();
values[i++] = loggingEvent.getMDCPropertyMap();
-
+
IThrowableProxy iThrowableProxy = loggingEvent.getThrowableProxy();
-
+
if (iThrowableProxy != null) {
values[i++] = iThrowableProxy;
- if(iThrowableProxy instanceof ThrowableProxy) {
+ if (iThrowableProxy instanceof ThrowableProxy) {
values[i++] = ((ThrowableProxy) iThrowableProxy).getThrowable();
} else {
values[i++] = null;
@@ -138,12 +140,11 @@ public class JaninoEventEvaluator extends
JaninoEventEvaluatorBase<ILoggingEvent
values[i++] = null;
values[i++] = null;
}
-
-
- for(int j = 0; j < matcherListSize; j++) {
+
+ for (int j = 0; j < matcherListSize; j++) {
values[i++] = (Matcher) matcherList.get(j);
}
-
+
return values;
}
diff --git
a/logback-classic/src/test/java/ch/qos/logback/classic/boolex/JaninoEventEvaluatorTest.java
b/logback-classic/src/test/java/ch/qos/logback/classic/boolex/JaninoEventEvaluatorTest.java
index 8be5a62..17eabe8 100644
---
a/logback-classic/src/test/java/ch/qos/logback/classic/boolex/JaninoEventEvaluatorTest.java
+++
b/logback-classic/src/test/java/ch/qos/logback/classic/boolex/JaninoEventEvaluatorTest.java
@@ -13,6 +13,7 @@
*/
package ch.qos.logback.classic.boolex;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -31,15 +32,22 @@ import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.core.boolex.EvaluationException;
import ch.qos.logback.core.boolex.JaninoEventEvaluatorBase;
import ch.qos.logback.core.boolex.Matcher;
+import ch.qos.logback.core.filter.EvaluatorFilter;
+import ch.qos.logback.core.spi.FilterReply;
+import ch.qos.logback.core.util.StatusPrinter;
-public class JaninoEventEvaluatorTest {
+public class JaninoEventEvaluatorTest {
LoggerContext loggerContext = new LoggerContext();
Logger logger = loggerContext.getLogger(ConverterTest.class);
Matcher matcherX = new Matcher();
+ JaninoEventEvaluator jee = new JaninoEventEvaluator();
+
public JaninoEventEvaluatorTest() {
+ jee.setContext(loggerContext);
+
matcherX.setName("x");
matcherX.setRegex("^Some\\s.*");
matcherX.start();
@@ -55,33 +63,27 @@ public class JaninoEventEvaluatorTest {
@Test
public void testBasic() throws Exception {
- JaninoEventEvaluator jee = new JaninoEventEvaluator();
jee.setExpression("message.equals(\"Some message\")");
- jee.setContext(loggerContext);
jee.start();
ILoggingEvent event = makeLoggingEvent(null);
- //System.out.println(event);
+ // System.out.println(event);
assertTrue(jee.evaluate(event));
}
@Test
public void testLevel() throws Exception {
- JaninoEventEvaluator jee = new JaninoEventEvaluator();
jee.setExpression("level > DEBUG");
- jee.setContext(loggerContext);
jee.start();
ILoggingEvent event = makeLoggingEvent(null);
- //System.out.println(event);
+ // System.out.println(event);
assertTrue(jee.evaluate(event));
}
@Test
public void testtimeStamp() throws Exception {
- JaninoEventEvaluator jee = new JaninoEventEvaluator();
jee.setExpression("timeStamp > 10");
- jee.setContext(loggerContext);
jee.start();
ILoggingEvent event = makeLoggingEvent(null);
@@ -90,10 +92,7 @@ public class JaninoEventEvaluatorTest {
@Test
public void testWithMatcher() throws Exception {
-
- JaninoEventEvaluator jee = new JaninoEventEvaluator();
jee.setExpression("x.matches(message)");
- jee.setContext(loggerContext);
jee.addMatcher(matcherX);
jee.start();
@@ -102,11 +101,8 @@ public class JaninoEventEvaluatorTest {
}
@Test
- public void testMarker() throws Exception {
- JaninoEventEvaluator jee = new JaninoEventEvaluator();
+ public void marker() throws Exception {
jee.setExpression("marker.contains(\"BLUE\")");
- jee.setContext(loggerContext);
- jee.addMatcher(matcherX);
jee.start();
LoggingEvent event = makeLoggingEvent(null);
@@ -115,11 +111,8 @@ public class JaninoEventEvaluatorTest {
}
@Test
- public void testWithNullMarker_LBCORE_118() throws Exception {
- JaninoEventEvaluator jee = new JaninoEventEvaluator();
+ public void withNullMarker_LBCORE_118() throws Exception {
jee.setExpression("marker.contains(\"BLUE\")");
- jee.setContext(loggerContext);
- jee.addMatcher(matcherX);
jee.start();
ILoggingEvent event = makeLoggingEvent(null);
@@ -127,36 +120,32 @@ public class JaninoEventEvaluatorTest {
jee.evaluate(event);
fail("We should not reach this point");
} catch (EvaluationException ee) {
-
+ // received an exception as expected
}
}
@Test
- public void testWithNullMarker() throws Exception {
- JaninoEventEvaluator jee = new JaninoEventEvaluator();
+ public void evaluatorFilterWithNullMarker_LBCORE_118() throws Exception {
+ EvaluatorFilter<ILoggingEvent> ef = new EvaluatorFilter<ILoggingEvent>();
+ ef.setContext(loggerContext);
+
+ ef.setOnMatch(FilterReply.ACCEPT);
+ ef.setOnMismatch(FilterReply.DENY);
+
jee.setExpression("marker.contains(\"BLUE\")");
- jee.setContext(loggerContext);
- jee.addMatcher(matcherX);
jee.start();
+ ef.setEvaluator(jee);
+ ef.start();
ILoggingEvent event = makeLoggingEvent(null);
- try {
- jee.evaluate(event);
- fail("We should not reach this point");
- } catch (EvaluationException ee) {
-
- }
+ assertEquals(FilterReply.NEUTRAL, ef.decide(event));
+
}
-
-
@Test
public void testComplex() throws Exception {
-
- JaninoEventEvaluator jee = new JaninoEventEvaluator();
jee
.setExpression("level >= INFO && x.matches(message) &&
marker.contains(\"BLUE\")");
- jee.setContext(loggerContext);
jee.addMatcher(matcherX);
jee.start();
@@ -166,35 +155,23 @@ public class JaninoEventEvaluatorTest {
}
/**
- * check that evaluator with bogis exp does not start
+ * check that evaluator with bogus exp does not start
*
* @throws Exception
*/
@Test
public void testBogusExp1() {
-
- JaninoEventEvaluator jee = new JaninoEventEvaluator();
jee.setExpression("mzzzz.get(\"key\").equals(null)");
- jee.setContext(loggerContext);
jee.setName("bogus");
jee.start();
assertFalse(jee.isStarted());
-
- // StatusPrinter.print(loggerContext);
- // LoggingEvent event = makeLoggingEvent(null);
- // event.setMarker(MarkerFactory.getMarker("BLUE"));
- //
- // jee.evaluate(event);
}
// check that eval stops after errors
@Test
public void testBogusExp2() {
-
- JaninoEventEvaluator jee = new JaninoEventEvaluator();
jee.setExpression("mdc.get(\"keyXN89\").equals(null)");
- jee.setContext(loggerContext);
jee.setName("bogus");
jee.start();
@@ -222,19 +199,17 @@ public class JaninoEventEvaluatorTest {
// with 10 parameters 510 nanos (all levels + fields)
void loop(JaninoEventEvaluator jee, String msg) throws Exception {
ILoggingEvent event = makeLoggingEvent(null);
- //final long start = System.nanoTime();
+ // final long start = System.nanoTime();
for (int i = 0; i < LEN; i++) {
jee.evaluate(event);
}
- //final long end = System.nanoTime();
- //System.out.println(msg + (end - start) / LEN + " nanos");
+ // final long end = System.nanoTime();
+ // System.out.println(msg + (end - start) / LEN + " nanos");
}
@Test
public void testLoop1() throws Exception {
- JaninoEventEvaluator jee = new JaninoEventEvaluator();
jee.setExpression("timeStamp > 10");
- jee.setContext(loggerContext);
jee.start();
loop(jee, "timestamp > 10]: ");
@@ -242,32 +217,25 @@ public class JaninoEventEvaluatorTest {
@Test
public void testLoop2() throws Exception {
- JaninoEventEvaluator jee = new JaninoEventEvaluator();
jee.setExpression("x.matches(message)");
- jee.setContext(loggerContext);
jee.addMatcher(matcherX);
jee.start();
loop(jee, "x.matches(message): ");
}
- @Test
+ @Test
public void throwable_LBCLASSIC_155_I() throws EvaluationException {
- JaninoEventEvaluator jee = new JaninoEventEvaluator();
jee.setExpression("throwable instanceof java.io.IOException");
- jee.setContext(loggerContext);
jee.start();
LoggingEvent event = makeLoggingEvent(new IOException(""));
assertTrue(jee.evaluate(event));
}
-
- @Test
+ @Test
public void throwable_LBCLASSIC_155_II() throws EvaluationException {
- JaninoEventEvaluator jee = new JaninoEventEvaluator();
jee.setExpression("throwableProxy.getClassName().contains(\"IO\")");
- jee.setContext(loggerContext);
jee.start();
LoggingEvent event = makeLoggingEvent(new IOException(""));
diff --git a/logback-examples/src/main/java/chapter6/evaluatorWithMatcher.xml
b/logback-examples/src/main/java/chapter6/evaluatorWithMatcher.xml
index 64d0efb..f2aab92 100644
--- a/logback-examples/src/main/java/chapter6/evaluatorWithMatcher.xml
+++ b/logback-examples/src/main/java/chapter6/evaluatorWithMatcher.xml
@@ -9,7 +9,7 @@
<regex>statement [13579]</regex>
</matcher>
- <expression>message.contains("billing") ||
odd.matches(formattedMessage)</expression>
+ <expression>odd.matches(formattedMessage)</expression>
</evaluator>
<OnMismatch>NEUTRAL</OnMismatch>
<OnMatch>DENY</OnMatch>
diff --git a/logback-site/src/site/pages/manual/filters.html
b/logback-site/src/site/pages/manual/filters.html
index 3b61138..b2aa23c 100644
--- a/logback-site/src/site/pages/manual/filters.html
+++ b/logback-site/src/site/pages/manual/filters.html
@@ -348,7 +348,9 @@ public class SampleFilter extends Filter>ILoggingEvent> {
<td>marker</td>
<td><code>Marker</code></td>
<td>The <code>Marker</code> object associated with the logging
- request.
+ request. Note that marker can be null and it is your
+ responsibility to check for this condition in order to avoid
+ <code>NullPointerException</code>.
</td>
</tr>
<tr>
@@ -502,7 +504,7 @@ java chapter6.FilterEvents
src/main/java/chapter6/basicConfiguration.xml
<em>Example 6.<span class="autoEx"/>: Defining matchers in an event evaluator
(logback-examples/src/main/java/chapter6/evaluatorWithMatcher.xml)</em>
- <pre class="prettyprint source longline"><configuration debug="true">
+ <pre class="prettyprint source"><configuration debug="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
@@ -513,7 +515,7 @@ java chapter6.FilterEvents
src/main/java/chapter6/basicConfiguration.xml
<regex>statement [13579]</regex>
</matcher>
- <expression>message.contains("billing") ||
odd.matches(formattedMessage)</expression></b>
+ <expression>odd.matches(formattedMessage)</expression></b>
</evaluator>
<OnMismatch>NEUTRAL</OnMismatch>
<OnMatch>DENY</OnMatch>
@@ -533,13 +535,14 @@ java chapter6.FilterEvents
src/main/java/chapter6/basicConfiguration.xml
<p>we obtain:
</p>
- <p class="source">220 [main] INFO chapter6.FilterEvents - logging
statement 0
-223 [main] INFO chapter6.FilterEvents - logging statement 2
-223 [main] INFO chapter6.FilterEvents - logging statement 4
-225 [main] INFO chapter6.FilterEvents - logging statement 8</p>
+ <p class="source">260 [main] INFO chapter6.FilterEvents - logging
statement 0
+264 [main] INFO chapter6.FilterEvents - logging statement 2
+264 [main] INFO chapter6.FilterEvents - logging statement 4
+266 [main] ERROR chapter6.FilterEvents - billing statement 6
+266 [main] INFO chapter6.FilterEvents - logging statement 8</p>
<p>In case you need to define additional matchers, you can do so by
- adding further <code><matcher></code> elements.
+ adding further <code><matcher></code> elements.</p>
<!-- ================================================================ -->
<!-- ===================== TURBO FILTER ============================= -->
-----------------------------------------------------------------------
Summary of changes:
.../classic/boolex/JaninoEventEvaluator.java | 55 ++++++------
.../classic/boolex/JaninoEventEvaluatorTest.java | 94 +++++++-------------
.../main/java/chapter6/evaluatorWithMatcher.xml | 2 +-
logback-site/src/site/pages/manual/filters.html | 19 +++--
4 files changed, 71 insertions(+), 99 deletions(-)
hooks/post-receive
--
Logback: the generic, reliable, fast and flexible logging framework.
_______________________________________________
logback-dev mailing list
[email protected]
http://qos.ch/mailman/listinfo/logback-dev