You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by sd...@apache.org on 2004/06/07 22:10:05 UTC
cvs commit: logging-log4j/src/java/org/apache/log4j/varia LogFilePatternReceiverBeanInfo.java LogFilePatternReceiver.java
sdeboy 2004/06/07 13:10:05
Modified: src/java/org/apache/log4j/varia
LogFilePatternReceiverBeanInfo.java
LogFilePatternReceiver.java
Log:
added support for a 'filterExpression' parameter on logfilePatternReceiver.
the filterExpression is converted to an ExpressionRule and only events passing the expression
Are then processed by the receiver.
We may want a more general way to do this (this would likely be a useful feature for all receivers but supporting the LIKE operator creates an ORO dependency)
Revision Changes Path
1.6 +1 -0 logging-log4j/src/java/org/apache/log4j/varia/LogFilePatternReceiverBeanInfo.java
Index: LogFilePatternReceiverBeanInfo.java
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/varia/LogFilePatternReceiverBeanInfo.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- LogFilePatternReceiverBeanInfo.java 26 Mar 2004 04:51:27 -0000 1.5
+++ LogFilePatternReceiverBeanInfo.java 7 Jun 2004 20:10:05 -0000 1.6
@@ -39,6 +39,7 @@
new PropertyDescriptor("logFormat", LogFilePatternReceiver.class),
new PropertyDescriptor("name", LogFilePatternReceiver.class),
new PropertyDescriptor("tailing", LogFilePatternReceiver.class),
+ new PropertyDescriptor("filterExpression", LogFilePatternReceiver.class),
};
} catch (Exception e) {
}
1.12 +62 -14 logging-log4j/src/java/org/apache/log4j/varia/LogFilePatternReceiver.java
Index: LogFilePatternReceiver.java
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/varia/LogFilePatternReceiver.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- LogFilePatternReceiver.java 3 Jun 2004 07:17:33 -0000 1.11
+++ LogFilePatternReceiver.java 7 Jun 2004 20:10:05 -0000 1.12
@@ -16,23 +16,12 @@
package org.apache.log4j.varia;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.apache.log4j.helpers.Constants;
-import org.apache.log4j.helpers.LogLog;
-import org.apache.log4j.plugins.Receiver;
-import org.apache.log4j.spi.LocationInfo;
-import org.apache.log4j.spi.LoggingEvent;
-import org.apache.log4j.spi.ThrowableInformation;
-
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
-
import java.text.SimpleDateFormat;
-
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
@@ -41,6 +30,17 @@
import java.util.List;
import java.util.Map;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.helpers.Constants;
+import org.apache.log4j.helpers.LogLog;
+import org.apache.log4j.plugins.Receiver;
+import org.apache.log4j.rule.ExpressionRule;
+import org.apache.log4j.rule.Rule;
+import org.apache.log4j.spi.LocationInfo;
+import org.apache.log4j.spi.LoggingEvent;
+import org.apache.log4j.spi.ThrowableInformation;
+
/**
* A receiver which supports the definition of the log format using keywords, the
@@ -95,6 +95,9 @@
* Note how keywords may be surrounded by delimiters, and in the second example,
* ndc is ignored (even multiple words in the ndc in this case, since the keyword
* is followed by a delimiter (-)
+ *
+ * Assign a filterExpression in order to only process events which match a filter.
+ * If a filterExpression is not assigned, all events are processed.
*
* LIMITATIONS:
* - specify delimited NDC or MDC entries using support for properties
@@ -153,6 +156,8 @@
private String fileName;
private String shortFileName;
private boolean tailing;
+ private String filterExpression;
+ private Rule expressionRule;
/**
* Creates a new LogFilePatternReceiver object.
@@ -248,6 +253,24 @@
/**
* Accessor
*
+ * @return filter expression
+ */
+ public String getFilterExpression() {
+ return filterExpression;
+ }
+
+ /**
+ * Mutator
+ *
+ * @param filterExpression
+ */
+ public void setFilterExpression(String filterExpression) {
+ this.filterExpression = filterExpression;
+ }
+
+ /**
+ * Accessor
+ *
* @return tailing
*/
public boolean isTailing() {
@@ -363,14 +386,26 @@
// "created event with exception " + event.getLoggerName() + ".."
// + event.getMessage());
if (event != null) {
- doPost(event);
+ if (expressionRule != null) {
+ if (expressionRule.evaluate(event)) {
+ doPost(event);
+ }
+ } else {
+ doPost(event);
+ }
}
} else {
//GENERATE NON-EXCEPTION EVENT
LoggingEvent event = convertToEvent((String) list.remove(0));
if (event != null) {
- doPost(event);
+ if (expressionRule != null) {
+ if (expressionRule.evaluate(event)) {
+ doPost(event);
+ }
+ } else {
+ doPost(event);
+ }
}
//System.out.println(
@@ -391,7 +426,13 @@
LoggingEvent event = convertToEvent(s);
if (event != null) {
- doPost(event);
+ if (expressionRule != null) {
+ if (expressionRule.evaluate(event)) {
+ doPost(event);
+ }
+ } else {
+ doPost(event);
+ }
}
//System.out.println(
@@ -629,6 +670,13 @@
* Initialize and post log entries to framework
*/
public void activateOptions() {
+ try {
+ if (filterExpression != null) {
+ expressionRule = ExpressionRule.getRule(filterExpression);
+ }
+ } catch (Exception e) {
+ LogLog.warn("Invalid filter expression: " + filterExpression, e);
+ }
new Thread(
new Runnable() {
public void run() {
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org