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