sdeboy 2003/10/23 02:32:23
Modified: src/java/org/apache/log4j/chainsaw/rule ExpressionRule.java
src/java/org/apache/log4j/chainsaw
LoggingEventFieldResolver.java
Log:
Simplified expressionrule, referencing constants in fieldresolver
Revision Changes Path
1.2 +6 -37
jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/ExpressionRule.java
Index: ExpressionRule.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/ExpressionRule.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ExpressionRule.java 23 Oct 2003 09:18:12 -0000 1.1
+++ ExpressionRule.java 23 Oct 2003 09:32:23 -0000 1.2
@@ -52,9 +52,6 @@
import org.apache.log4j.spi.LoggingEvent;
import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
import java.util.Stack;
import java.util.StringTokenizer;
@@ -72,11 +69,11 @@
private static InFixToPostFix convertor = new InFixToPostFix();
private static PostFixExpressionCompiler compiler =
new PostFixExpressionCompiler();
- List list = null;
+ Rule rule = null;
Stack stack = new Stack();
- private ExpressionRule(List list) {
- this.list = list;
+ private ExpressionRule(Rule rule) {
+ this.rule = rule;
}
static Rule getRule(String expression, boolean isPostFix) {
@@ -88,30 +85,7 @@
}
public boolean evaluate(LoggingEvent event) {
- stack.clear();
-
- boolean result = false;
- Iterator iter = list.iterator();
-
- while (iter.hasNext()) {
- //examine each token
- Object nextItem = iter.next();
-
- //if a symbol is found, pop 2 off the stack, evaluate and push the result
- if (nextItem instanceof Rule) {
- Rule r = (Rule) nextItem;
- stack.push(new Boolean(r.evaluate(event)));
- } else {
- //variables or constants are pushed onto the stack
- stack.push(nextItem);
- }
- }
-
- if (stack.size() > 0) {
- result = new Boolean(stack.pop().toString()).booleanValue();
- }
-
- return result;
+ return rule.evaluate(event);
}
}
@@ -122,10 +96,9 @@
*/
class PostFixExpressionCompiler {
- List compileExpression(String expression) {
+ Rule compileExpression(String expression) {
System.out.println("compiling expression: " + expression);
- List list = new LinkedList();
Stack stack = new Stack();
Enumeration tokenizer = new StringTokenizer(expression);
@@ -146,10 +119,6 @@
}
}
- while (!stack.isEmpty()) {
- list.add(stack.pop());
- }
-
- return list;
+ return (Rule)stack.pop();
}
}
1.5 +54 -25
jakarta-log4j/src/java/org/apache/log4j/chainsaw/LoggingEventFieldResolver.java
Index: LoggingEventFieldResolver.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/LoggingEventFieldResolver.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- LoggingEventFieldResolver.java 17 Sep 2003 06:24:38 -0000 1.4
+++ LoggingEventFieldResolver.java 23 Oct 2003 09:32:23 -0000 1.5
@@ -49,6 +49,9 @@
package org.apache.log4j.chainsaw;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.log4j.spi.LoggingEvent;
@@ -93,62 +96,88 @@
*
*/
public final class LoggingEventFieldResolver {
+ private static final List keywordList = new ArrayList();
+
+ private static final String LOGGER_FIELD = "LOGGER";
+ private static final String LEVEL_FIELD = "LEVEL";
+ private static final String CLASS_FIELD = "CLASS";
+ private static final String FILE_FIELD = "FILE";
+ private static final String LINE_FIELD = "LINE";
+ private static final String METHOD_FIELD = "METHOD";
+ private static final String MSG_FIELD = "MSG";
+ private static final String NDC_FIELD = "NDC";
+ private static final String EXCEPTION_FIELD = "EXCEPTION";
+ private static final String TIMESTAMP_FIELD = "TIMESTAMP";
+ private static final String THREAD_FIELD = "THREAD";
+ private static final String MDC_FIELD = "MDC.";
+ private static final String PROP_FIELD = "PROP.";
+
+ private static final String EMPTY_STRING = "";
+
private static final LoggingEventFieldResolver resolver =
new LoggingEventFieldResolver();
-
+
private LoggingEventFieldResolver() {
+ keywordList.add(LOGGER_FIELD);
+ keywordList.add(LEVEL_FIELD);
+ keywordList.add(CLASS_FIELD);
+ keywordList.add(FILE_FIELD);
+ keywordList.add(LINE_FIELD);
+ keywordList.add(METHOD_FIELD);
+ keywordList.add(MSG_FIELD);
+ keywordList.add(NDC_FIELD);
+ keywordList.add(EXCEPTION_FIELD);
+ keywordList.add(TIMESTAMP_FIELD);
+ keywordList.add(THREAD_FIELD);
+ keywordList.add(MDC_FIELD);
+ keywordList.add(PROP_FIELD);
}
public static LoggingEventFieldResolver getInstance() {
return resolver;
}
+ public List getKeywords() {
+ return keywordList;
+ }
+
public boolean isField(String fieldName) {
- if (fieldName == null) {
- return false;
- }
- String upperField = fieldName.toUpperCase();
-
- return (upperField != null && ("LOGGER".equals(upperField) ||
"LEVEL".equals(upperField) ||
- "CLASS".equals(upperField) || "FILE".equals(upperField) ||
"LINE".equals(upperField) ||
- "METHOD".equals(upperField) || "MSG".equals(upperField) ||
"NDC".equals(upperField) ||
- "EXCEPTION".equals(upperField) || "TIMESTAMP".equals(upperField) ||
"THREAD".equals(upperField) ||
- upperField.startsWith("MDC.") || upperField.startsWith("PROP.")));
+ return keywordList.contains(fieldName);
}
public Object getValue(String fieldName, LoggingEvent event) {
if (fieldName == null) {
- return "";
+ return EMPTY_STRING;
}
String upperField = fieldName.toUpperCase();
- if ("LOGGER".equals(upperField)) {
+ if (LOGGER_FIELD.equals(upperField)) {
return event.getLoggerName();
- } else if ("LEVEL".equals(upperField)) {
+ } else if (LEVEL_FIELD.equals(upperField)) {
return event.getLevel();
- } else if ("CLASS".equals(upperField)) {
+ } else if (CLASS_FIELD.equals(upperField)) {
return event.getLocationInformation().getClassName();
- } else if ("FILE".equals(upperField)) {
+ } else if (FILE_FIELD.equals(upperField)) {
return event.getLocationInformation().getFileName();
- } else if ("LINE".equals(upperField)) {
+ } else if (LINE_FIELD.equals(upperField)) {
return event.getLocationInformation().getLineNumber();
- } else if ("METHOD".equals(upperField)) {
+ } else if (METHOD_FIELD.equals(upperField)) {
return event.getLocationInformation().getMethodName();
- } else if ("MSG".equals(upperField)) {
+ } else if (MSG_FIELD.equals(upperField)) {
return event.getMessage();
- } else if ("NDC".equals(upperField)) {
+ } else if (NDC_FIELD.equals(upperField)) {
return event.getNDC();
- } else if ("EXCEPTION".equals(upperField)) {
+ } else if (EXCEPTION_FIELD.equals(upperField)) {
return event.getThrowableInformation();
- } else if ("TIMESTAMP".equals(upperField)) {
+ } else if (TIMESTAMP_FIELD.equals(upperField)) {
return new Long(event.timeStamp);
- } else if ("THREAD".equals(upperField)) {
+ } else if (THREAD_FIELD.equals(upperField)) {
return event.getThreadName();
- } else if (upperField.startsWith("MDC.")) {
+ } else if (upperField.startsWith(MDC_FIELD)) {
//note: need to use actual fieldname since case matters
return event.getMDC(fieldName.substring(4));
- } else if (upperField.startsWith("PROP.")) {
+ } else if (upperField.startsWith(PROP_FIELD)) {
//note: need to use actual fieldname since case matters
return event.getProperty(fieldName.substring(5));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]