sdeboy 2003/10/25 00:52:55
Modified: src/java/org/apache/log4j/chainsaw/rule
LevelInequalityRule.java RuleTest.java
InequalityRule.java
src/java/org/apache/log4j/chainsaw
LoggingEventFieldResolver.java
Log:
Corrected inequality rule logic errors, added example ruletest expression
demonstrating regular expressions, inequality and access of MDC entries in the
expressions.
Revision Changes Path
1.2 +70 -64
jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/LevelInequalityRule.java
Index: LevelInequalityRule.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/LevelInequalityRule.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- LevelInequalityRule.java 24 Oct 2003 08:04:03 -0000 1.1
+++ LevelInequalityRule.java 25 Oct 2003 07:52:55 -0000 1.2
@@ -49,78 +49,84 @@
package org.apache.log4j.chainsaw.rule;
+import org.apache.log4j.Level;
+import org.apache.log4j.UtilLoggingLevel;
+import org.apache.log4j.chainsaw.LoggingEventFieldResolver;
+import org.apache.log4j.spi.LoggingEvent;
+
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;
-import org.apache.log4j.Level;
-import org.apache.log4j.UtilLoggingLevel;
-import org.apache.log4j.chainsaw.LoggingEventFieldResolver;
-import org.apache.log4j.spi.LoggingEvent;
+
/**
* A Rule class implementing inequality evaluation for Levels (log4j and
util.logging) using the toInt method.
*
* @author Scott Deboy <[EMAIL PROTECTED]>
*/
-
class LevelInequalityRule extends AbstractRule {
- LoggingEventFieldResolver resolver = LoggingEventFieldResolver.getInstance();
-
- Level levelFirstParam;
- String levelSecondParam;
- List utilList = new LinkedList();
- List levelList = new LinkedList();
- String inequalitySymbol;
-
- private LevelInequalityRule(String inequalitySymbol, String levelFirstParam,
String levelSecondParam) {
- levelList.add(Level.FATAL.toString());
- levelList.add(Level.ERROR.toString());
- levelList.add(Level.WARN.toString());
- levelList.add(Level.INFO.toString());
- levelList.add(Level.DEBUG.toString());
-
- Iterator iter = UtilLoggingLevel.getAllPossibleLevels().iterator();
- while (iter.hasNext()) {
- utilList.add(((UtilLoggingLevel)iter.next()).toString());
- }
-
- if (levelList.contains(levelFirstParam)) {
- this.levelFirstParam = Level.toLevel(levelFirstParam);
- } else {
- this.levelFirstParam = UtilLoggingLevel.toLevel(levelFirstParam);
- }
- this.inequalitySymbol = inequalitySymbol;
- this.levelSecondParam = levelSecondParam;
- }
-
- static Rule getRule(String inequalitySymbol, Stack stack) {
- String p1 = stack.pop().toString();
- String p2 = stack.pop().toString();
- return new LevelInequalityRule(inequalitySymbol, p1, p2);
- }
-
- public boolean evaluate(LoggingEvent event) {
- //use the type of the first level to access the static toLevel method on
the second param
- Level level2 = levelFirstParam.toLevel(resolver.getValue(levelSecondParam,
event).toString());
- System.out.println("lessthan level op " + levelFirstParam + ".." + level2);
-
- boolean result = false;
- int first = levelFirstParam.toInt();
- int second = level2.toInt();
-
- if ("<".equals(inequalitySymbol)) {
- result = first < second;
- } else if (">".equals(inequalitySymbol)) {
- result = first > second;
- } else if ("<=".equals(inequalitySymbol)){
- result = first <= second;
- } else if (">=".equals(inequalitySymbol)) {
- result = first >= second;
- }
- System.out.println("result is " + result);
-
- return result;
- }
-
- }
\ No newline at end of file
+ LoggingEventFieldResolver resolver = LoggingEventFieldResolver.getInstance();
+ Level levelFirstParam;
+ String levelSecondParam;
+ List utilList = new LinkedList();
+ List levelList = new LinkedList();
+ String inequalitySymbol;
+
+ private LevelInequalityRule(
+ String inequalitySymbol, String levelFirstParam, String levelSecondParam) {
+ levelList.add(Level.FATAL.toString());
+ levelList.add(Level.ERROR.toString());
+ levelList.add(Level.WARN.toString());
+ levelList.add(Level.INFO.toString());
+ levelList.add(Level.DEBUG.toString());
+
+ Iterator iter = UtilLoggingLevel.getAllPossibleLevels().iterator();
+
+ while (iter.hasNext()) {
+ utilList.add(((UtilLoggingLevel) iter.next()).toString());
+ }
+
+ if (levelList.contains(levelFirstParam)) {
+ this.levelFirstParam = Level.toLevel(levelFirstParam);
+ } else {
+ this.levelFirstParam = UtilLoggingLevel.toLevel(levelFirstParam);
+ }
+
+ this.inequalitySymbol = inequalitySymbol;
+ this.levelSecondParam = levelSecondParam;
+ }
+
+ static Rule getRule(String inequalitySymbol, Stack stack) {
+ String p1 = stack.pop().toString();
+ String p2 = stack.pop().toString();
+
+ return new LevelInequalityRule(inequalitySymbol, p1, p2);
+ }
+
+ public boolean evaluate(LoggingEvent event) {
+ //use the type of the first level to access the static toLevel method on the
second param
+ Level level2 =
+ levelFirstParam.toLevel(
+ resolver.getValue(levelSecondParam, event).toString());
+ System.out.println("lessthan level op " + levelFirstParam + ".." + level2);
+
+ boolean result = false;
+ int first = level2.toInt();
+ int second = levelFirstParam.toInt();
+
+ if ("<".equals(inequalitySymbol)) {
+ result = first < second;
+ } else if (">".equals(inequalitySymbol)) {
+ result = first > second;
+ } else if ("<=".equals(inequalitySymbol)) {
+ result = first <= second;
+ } else if (">=".equals(inequalitySymbol)) {
+ result = first >= second;
+ }
+
+ System.out.println("result is " + result);
+
+ return result;
+ }
+}
1.10 +135 -130
jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/RuleTest.java
Index: RuleTest.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/RuleTest.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- RuleTest.java 23 Oct 2003 09:18:12 -0000 1.9
+++ RuleTest.java 25 Oct 2003 07:52:55 -0000 1.10
@@ -49,9 +49,16 @@
package org.apache.log4j.chainsaw.rule;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.MDC;
+import org.apache.log4j.chainsaw.LoggingEventFieldResolver;
+import org.apache.log4j.spi.LoggingEvent;
+
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
+
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -65,136 +72,134 @@
import javax.swing.JTextField;
import javax.swing.WindowConstants;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.apache.log4j.chainsaw.LoggingEventFieldResolver;
-import org.apache.log4j.spi.LoggingEvent;
public class RuleTest extends JFrame {
- /**
- * UI for demonstrating infix/postfix conversion and expression rule
evaluation...work in progress...
- *
- * Infix to postfix conversion routines and evaluation methods for boolean
expressions.
- * See http://www.qiksearch.com/articles/cs/infix-postfix/
- * and http://www.spsu.edu/cs/faculty/bbrown/web_lectures/postfix/
- *
- * for more information.
- *
- * @author Scott Deboy <[EMAIL PROTECTED]>
- *
- */
- Rule rule;
- public RuleTest(String booleanPostFixExpression, String inFixExpression) {
- setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
- getContentPane().setLayout(new BorderLayout());
-
- final LoggingEventFieldResolver resolver =
- LoggingEventFieldResolver.getInstance();
-
- final List eventList = new ArrayList();
-
- eventList.add(
- new LoggingEvent(
- "org.apache.log4j.chainsaw",
- Logger.getLogger("logger1"),
- System.currentTimeMillis(),
- Level.DEBUG,
- "message1",
- new Exception("test")));
- eventList.add(
- new LoggingEvent(
- "org.apache.log4j.chainsaw",
- Logger.getLogger("logger2"),
- System.currentTimeMillis(),
- Level.DEBUG,
- "message2",
- new Exception("test2")));
- eventList.add(
- new LoggingEvent(
- "org.apache.log4j.net",
- Logger.getLogger("logger3"),
- System.currentTimeMillis(),
- Level.DEBUG,
- "message3",
- new Exception("test3")));
- eventList.add(
- new LoggingEvent(
- "org.apache.log4j.chainsaw",
- Logger.getLogger("logger4"),
- System.currentTimeMillis(),
- Level.WARN,
- "message4",
- new Exception("test4")));
-
- JPanel fieldPanel = new JPanel(new GridLayout(5, 1));
-
- fieldPanel.add(
- new JLabel("Enter infix expression to convert to postfix: "));
-
- final JTextField inFixTextField = new JTextField(inFixExpression);
- fieldPanel.add(inFixTextField);
-
- JButton inFixButton = new JButton("Convert InFix to PostFix");
- fieldPanel.add(inFixButton);
-
- JLabel resultsLabel = new JLabel("Results:");
- fieldPanel.add(resultsLabel);
-
- final JTextField inFixResult = new JTextField();
- fieldPanel.add(inFixResult);
- inFixButton.addActionListener(new AbstractAction() {
- public void actionPerformed(ActionEvent evt) {
- InFixToPostFix inFixConverter = new InFixToPostFix();
- inFixResult.setText(
-
inFixConverter.convert(inFixTextField.getText()));
- rule = ExpressionRule.getRule(inFixResult.getText(), true);
- }
- });
-
- JPanel resultsPanel = new JPanel(new BorderLayout());
-
- JButton resultsButton =
- new JButton("Evaluate postfix expression against collection of
events: ");
- resultsPanel.add(resultsButton, BorderLayout.NORTH);
-
- final JTextArea results = new JTextArea(5, 50);
- resultsPanel.add(results, BorderLayout.CENTER);
-
- resultsButton.addActionListener(new AbstractAction() {
- public void actionPerformed(ActionEvent evt) {
- results.setText("");
-
- Iterator iter = eventList.iterator();
-
- while (iter.hasNext()) {
- LoggingEvent event = (LoggingEvent)
iter.next();
- results.setText(
- results.getText()
- + ((results.getText().length()
== 0) ? "" : "\n")
- + "level: "
- + event.getLevel()
- + ", logger: "
- + event.getLoggerName()
- + " - result: "
- + rule.evaluate(event));
- }
- }
- });
-
- getContentPane().add(fieldPanel, BorderLayout.NORTH);
- getContentPane().add(resultsPanel, BorderLayout.CENTER);
- }
-
- private void setRule(Rule rule) {
- this.rule = rule;
- }
-
- public static void main(String[] args) {
- RuleTest test =
- new RuleTest(
- "level deb ~= blah test == || logger logger[1-3]
like && ",
- "( ( level ~= deb ) || ( BLAH == test ) ) && logger
like logger[1-3]");
- test.pack();
- test.setVisible(true);
- }
+ /**
+ * UI for demonstrating infix/postfix conversion and expression rule
evaluation...work in progress...
+ *
+ * Infix to postfix conversion routines and evaluation methods for boolean
expressions.
+ * See http://www.qiksearch.com/articles/cs/infix-postfix/
+ * and http://www.spsu.edu/cs/faculty/bbrown/web_lectures/postfix/
+ *
+ * for more information.
+ *
+ * @author Scott Deboy <[EMAIL PROTECTED]>
+ *
+ */
+ Rule rule;
+
+ public RuleTest(String booleanPostFixExpression, String inFixExpression) {
+ setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+ getContentPane().setLayout(new BorderLayout());
+
+ final LoggingEventFieldResolver resolver =
+ LoggingEventFieldResolver.getInstance();
+
+ final List eventList = new ArrayList();
+ MDC.put("entry1", "123");
+ eventList.add(
+ new LoggingEvent(
+ "org.apache.log4j.chainsaw", Logger.getLogger("logger1"),
+ System.currentTimeMillis(), Level.DEBUG, "message1",
+ new Exception("test")));
+ MDC.put("entry2", "test1");
+ eventList.add(
+ new LoggingEvent(
+ "org.apache.log4j.chainsaw", Logger.getLogger("logger2"),
+ System.currentTimeMillis(), Level.DEBUG, "message2",
+ new Exception("test2")));
+ eventList.add(
+ new LoggingEvent(
+ "org.apache.log4j.net", Logger.getLogger("logger3"),
+ System.currentTimeMillis(), Level.DEBUG, "message3",
+ new Exception("test3")));
+
+ MDC.put("test", "234");
+ eventList.add(
+ new LoggingEvent(
+ "org.apache.log4j.chainsaw", Logger.getLogger("logger4"),
+ System.currentTimeMillis(), Level.WARN, "message4",
+ new Exception("test4")));
+
+ JPanel fieldPanel = new JPanel(new GridLayout(5, 1));
+
+ fieldPanel.add(
+ new JLabel("Enter infix expression to convert to postfix: "));
+
+ final JTextField inFixTextField = new JTextField(inFixExpression);
+ fieldPanel.add(inFixTextField);
+
+ JButton inFixButton = new JButton("Convert InFix to PostFix");
+ fieldPanel.add(inFixButton);
+
+ JLabel resultsLabel = new JLabel("Results:");
+ fieldPanel.add(resultsLabel);
+
+ final JTextField inFixResult = new JTextField();
+ fieldPanel.add(inFixResult);
+ inFixButton.addActionListener(
+ new AbstractAction() {
+ public void actionPerformed(ActionEvent evt) {
+ InFixToPostFix inFixConverter = new InFixToPostFix();
+ inFixResult.setText(
+ inFixConverter.convert(inFixTextField.getText()));
+ rule = ExpressionRule.getRule(inFixResult.getText(), true);
+ }
+ });
+
+ JPanel resultsPanel = new JPanel(new BorderLayout());
+
+ JButton resultsButton =
+ new JButton(
+ "Evaluate postfix expression against collection of events: ");
+ resultsPanel.add(resultsButton, BorderLayout.NORTH);
+
+ final JTextArea results = new JTextArea(5, 50);
+ resultsPanel.add(results, BorderLayout.CENTER);
+
+ resultsButton.addActionListener(
+ new AbstractAction() {
+ public void actionPerformed(ActionEvent evt) {
+ results.setText("");
+
+ Iterator iter = eventList.iterator();
+
+ while (iter.hasNext()) {
+ LoggingEvent event = (LoggingEvent) iter.next();
+ Iterator iter2 = event.getMDCKeySet().iterator();
+ StringBuffer mdc = new StringBuffer();
+
+ while (iter2.hasNext()) {
+ String mdcKey = (String) iter2.next();
+ mdc.append(mdcKey);
+ mdc.append(":");
+ mdc.append(event.getMDC(mdcKey));
+ }
+
+ results.setText(
+ results.getText()
+ + ((results.getText().length() == 0) ? "" : "\n") + "level: "
+ + event.getLevel() + ", logger: " + event.getLoggerName()
+ + ", MDC: " + mdc.toString() + " - result: "
+ + rule.evaluate(event));
+ }
+ }
+ });
+
+ getContentPane().add(fieldPanel, BorderLayout.NORTH);
+ getContentPane().add(resultsPanel, BorderLayout.CENTER);
+ }
+
+ private void setRule(Rule rule) {
+ this.rule = rule;
+ }
+
+ public static void main(String[] args) {
+ RuleTest test =
+ new RuleTest(
+ "level deb ~= BLAH test == || logger logger[1-3] like MDC.entry1 234 >=
|| && ",
+ "( ( level ~= deb ) || ( BLAH == test ) ) && ( logger like logger[1-3] ||
MDC.entry1 >= 234 )");
+ test.pack();
+ test.setVisible(true);
+ }
}
1.2 +38 -22
jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/InequalityRule.java
Index: InequalityRule.java
===================================================================
RCS file:
/home/cvs/jakarta-log4j/src/java/org/apache/log4j/chainsaw/rule/InequalityRule.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- InequalityRule.java 24 Oct 2003 08:04:03 -0000 1.1
+++ InequalityRule.java 25 Oct 2003 07:52:55 -0000 1.2
@@ -49,28 +49,28 @@
package org.apache.log4j.chainsaw.rule;
-import java.util.Stack;
-
import org.apache.log4j.chainsaw.LoggingEventFieldResolver;
import org.apache.log4j.spi.LoggingEvent;
+import java.util.Stack;
+
+
/**
* A Rule class implementing less than - expects to be able to convert two values
to longs.
* If the field being evaluated can support inequality evaluation, the appropriate
rule is returned.
* (For example, if the expression is Level < DEBUG, a LessThanLevelRule is
returned).
- *
+ *
* @author Scott Deboy <[EMAIL PROTECTED]>
*/
-
class InequalityRule extends AbstractRule {
- private static final String LEVEL = "LEVEL";
-
+ private static final String LEVEL = "LEVEL";
LoggingEventFieldResolver resolver = LoggingEventFieldResolver.getInstance();
String firstParam;
String secondParam;
String inequalitySymbol;
- private InequalityRule(String inequalitySymbol, String firstParam, String
secondParam) {
+ private InequalityRule(
+ String inequalitySymbol, String firstParam, String secondParam) {
this.inequalitySymbol = inequalitySymbol;
this.firstParam = firstParam;
this.secondParam = secondParam;
@@ -79,34 +79,50 @@
static Rule getRule(String inequalitySymbol, Stack stack) {
String p1 = stack.pop().toString();
String p2 = stack.pop().toString();
+
if (p2.equalsIgnoreCase(LEVEL)) {
- //push the value back on the stack and allow the level-specific rule pop
values
- stack.push(p1);
- stack.push(p2);
+ //push the value back on the stack and allow the level-specific rule pop
values
+ stack.push(p2);
+ stack.push(p1);
- return LevelInequalityRule.getRule(inequalitySymbol, stack);
+ return LevelInequalityRule.getRule(inequalitySymbol, stack);
} else {
- System.out.println("get equals op " + p1 + ".." + p2);
+ System.out.println("get equals op " + p1 + ".." + p2);
- return new InequalityRule(inequalitySymbol, p1, p2);
+ return new InequalityRule(inequalitySymbol, p1, p2);
}
}
-
+
public boolean evaluate(LoggingEvent event) {
- long second = new Long(resolver.getValue(secondParam,
event).toString()).longValue();
- long first = new Long(firstParam).longValue();
+ long first = 0;
+
+ try {
+ first =
+ new Long(resolver.getValue(secondParam, event).toString()).longValue();
+ } catch (NumberFormatException nfe) {
+ return false;
+ }
+
+ long second = 0;
+
+ try {
+ second = new Long(firstParam).longValue();
+ } catch (NumberFormatException nfe) {
+ return false;
+ }
boolean result = false;
-
+
if ("<".equals(inequalitySymbol)) {
- result = first < second;
+ result = first < second;
} else if (">".equals(inequalitySymbol)) {
- result = first > second;
- } else if ("<=".equals(inequalitySymbol)){
- result = first <= second;
+ result = first > second;
+ } else if ("<=".equals(inequalitySymbol)) {
+ result = first <= second;
} else if (">=".equals(inequalitySymbol)) {
- result = first >= second;
+ result = first >= second;
}
+
System.out.println("result is " + result);
return result;
1.6 +35 -31
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.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- LoggingEventFieldResolver.java 23 Oct 2003 09:32:23 -0000 1.5
+++ LoggingEventFieldResolver.java 25 Oct 2003 07:52:55 -0000 1.6
@@ -49,11 +49,11 @@
package org.apache.log4j.chainsaw;
+import org.apache.log4j.spi.LoggingEvent;
+
import java.util.ArrayList;
import java.util.List;
-import org.apache.log4j.spi.LoggingEvent;
-
/**
* A singleton helper utility which accepts a field name and a LoggingEvent and
returns the
@@ -64,25 +64,25 @@
* The only available method is Object getField(String fieldName, LoggingEvent
event).
*
* Here is a description of the mapping of field names in the grammar
- * to fields on the logging event. While the getField method returns an Object,
the
- * individual types returned per field are described here:
+ * to fields on the logging event. While the getField method returns an Object, the
+ * individual types returned per field are described here:
*
- * Field Name Field value (String representation Return
type
- * LOGGER category name (logger)
String
- * LEVEL level
Level
- * CLASS locationInformation's class name String
- * FILE locationInformation's file name String
- * LINE locationInformation's line number String
- * METHOD locationInformation's method name String
- * MSG message
Object
- * NDC NDC
String
- * EXCEPTION throwable string representation
ThrowableInformation
- * TIMESTAMP timestamp
Long
- * THREAD thread
String
- * MDC.keyName entry in the MDC hashtable Object
- * mapped to key 'keyName'
- * PROP.keyName entry in the Property hashtable String
- * mapped to the key 'keyName'
+ * Field Name Field value (String representation
Return type
+ * LOGGER category name (logger)
String
+ * LEVEL level
Level
+ * CLASS locationInformation's class name String
+ * FILE locationInformation's file name String
+ * LINE locationInformation's line number String
+ * METHOD locationInformation's method name String
+ * MSG message
Object
+ * NDC NDC
String
+ * EXCEPTION throwable string representation
ThrowableInformation
+ * TIMESTAMP timestamp
Long
+ * THREAD thread
String
+ * MDC.keyName entry in the MDC hashtable
Object
+ * mapped to key 'keyName'
+ * PROP.keyName entry in the Property hashtable String
+ * mapped to the key
'keyName'
* NOTE: the values for the 'keyName' portion of the MDC and PROP mappings must
* be an exact match to the key in the hashTable (case sensitive).
@@ -97,7 +97,6 @@
*/
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";
@@ -111,12 +110,10 @@
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);
@@ -144,7 +141,7 @@
public boolean isField(String fieldName) {
return keywordList.contains(fieldName);
}
-
+
public Object getValue(String fieldName, LoggingEvent event) {
if (fieldName == null) {
return EMPTY_STRING;
@@ -167,21 +164,28 @@
} else if (MSG_FIELD.equals(upperField)) {
return event.getMessage();
} else if (NDC_FIELD.equals(upperField)) {
- return event.getNDC();
+ String ndcValue = event.getNDC();
+
+ return ((ndcValue == null) ? "" : ndcValue);
} else if (EXCEPTION_FIELD.equals(upperField)) {
- return event.getThrowableInformation();
+ return event.getThrowableInformation();
} else if (TIMESTAMP_FIELD.equals(upperField)) {
return new Long(event.timeStamp);
} else if (THREAD_FIELD.equals(upperField)) {
return event.getThreadName();
} else if (upperField.startsWith(MDC_FIELD)) {
//note: need to use actual fieldname since case matters
- return event.getMDC(fieldName.substring(4));
+ Object mdcValue = event.getMDC(fieldName.substring(4));
+
+ return ((mdcValue == null) ? "" : mdcValue.toString());
} else if (upperField.startsWith(PROP_FIELD)) {
- //note: need to use actual fieldname since case matters
- return event.getProperty(fieldName.substring(5));
+ //note: need to use actual fieldname since case matters
+ String propValue = event.getProperty(fieldName.substring(5));
+
+ return ((propValue == null) ? "" : propValue);
}
- //there wasn't a match, so just return the passed-in name
+
+ //there wasn't a match, so just return the passed-in name
return fieldName;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]