logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Curt Arnold <carn...@apache.org>
Subject Re: Using the extras companion
Date Wed, 15 Aug 2007 01:00:08 GMT

On Aug 14, 2007, at 11:44 AM, WALLIS, Simon, GBM wrote:

> Hi,
>
>
>
> I have downloaded the log4j extras companion from
> http://people.apache.org/builds/logging/log4j/companions/extras/1.0/
> <http://people.apache.org/builds/logging/log4j/companions/extras/ 
> 1.0/>  and
> I am trying to use an Expression Filter with log4j 1.2.13. I have  
> added the
> apache-log4j-extras-1.0.jar to my classpath. But, for the life of me I
> cannot get it to work.
>
>
>
> Here is my appender config where I'm trying to use the Expression  
> Filter.
>

...

>
> It just seems to halt on load and doesn't give me any error  
> message. Here is
> the log4j debug output. You will see it just halts after parsing the
> convertInFixToPostFix property.
>
>
>
> log4j: Class name: [org.apache.log4j.net.SMTPAppender]
>
> log4j: Setting property [SMTPHost] to [blah].
>
> log4j: Setting property [from] to [blah@rbs.com ].
>
> log4j: Setting property [to] to [blah@rbs.com ].
>
> log4j: Setting property [subject] to [my subject].
>
> log4j: Setting property [bufferSize] to [50].
>
> log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
>
> log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd  
> HH:mm:ss,SSS}
> %5p %c{1}:%L - %m%n].
>
> log4j: Setting property [expression] to [msg ~= blah].
>
> log4j: Setting property [acceptOnMatch] to [true].
>
> log4j: Setting property [convertInFixToPostFix] to [true].
>
>

..

Thanks for the feedback.  I've tried but haven't been able to  
reproduce the problem.  The log that I'm getting looks like:


log4j: Threshold ="".
log4j: Class name: [org.apache.log4j.net.SMTPAppender]
log4j: Setting property [SMTPHost] to [blah].
log4j: Setting property [from] to [blah@rbs.com ].
log4j: Setting property [to] to [blah@rbs.com ].
log4j: Setting property [subject] to [my subject].
log4j: Setting property [bufferSize] to [50].
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd  
HH:mm:ss,SSS} %5p %c{1}:%L - %m%n].
log4j: Setting property [expression] to [msg ~= blah].
log4j: Setting property [acceptOnMatch] to [true].
log4j: Setting property [convertInFixToPostFix] to [true].
log4j: Adding filter of type [class  
org.apache.log4j.filter.ExpressionFilter] to appender named  
[SMTPAppender].
log4j: Adding filter of type [class  
org.apache.log4j.filter.DenyAllFilter] to appender named [SMTPAppender].
log4j: Adding appender named [SMTPAppender] to category [root].
log4j: Level value for root is  [DEBUG].
log4j: root level set to DEBUG
Disconnected from the target VM, address: '127.0.0.1:56913',  
transport: 'socket'

The next major event that follows "Setting property  
[convertInFixToPostFix]" that ends your log should be the call to  
propSetter.activate() in DOMConfigurator.parseFilters.  The  
propSetter.activate() call should in turn call  
ExpressionFilter.activateOptions().  If that had succeeded, then you  
should have seen the "Adding filter of type ...ExpressionFilter"  
message from the line following the propSetter.activateCall().  If  
you can set a breakpoint on the propSetter.activate call and then  
step-into, hopefully you can get an indication of what is going wrong.

I made up a test case that parses an configuration file with your  
snippet of configuration code.  To apply

cd apache-log4j-extras-1.0
echo "" > src/test/resource/org/apache/log4j/filter/filteredsmtp.xml
patch -p 1 -i extras.patch

where extras.patch contains

diff -u -r apache-log4j-extras-1.0/pom.xml apache-log4j-extras- 
patched/pom.xml
--- apache-log4j-extras-1.0/pom.xml	2007-06-30 01:09:21.000000000 -0500
+++ apache-log4j-extras-patched/pom.xml	2007-08-14 19:01:50.000000000  
-0500
@@ -180,9 +180,14 @@
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
-      <version>1.2.9</version>
-    </dependency>
-	<dependency>
+      <version>1.2.13</version>
+    </dependency>
+      <dependency>
+        <groupId>javax.mail</groupId>
+        <artifactId>mail</artifactId>
+        <version>1.4</version>
+      </dependency>
+    <dependency>
        <groupId>oro</groupId>
        <artifactId>oro</artifactId>
        <version>2.0.8</version>
diff -u -r apache-log4j-extras-1.0/src/test/java/org/apache/log4j/ 
filter/SimpleFilterTest.java apache-log4j-extras-patched/src/test/ 
java/org/apache/log4j/filter/SimpleFilterTest.java
--- apache-log4j-extras-1.0/src/test/java/org/apache/log4j/filter/ 
SimpleFilterTest.java	2007-06-30 01:09:13.000000000 -0500
+++ apache-log4j-extras-patched/src/test/java/org/apache/log4j/filter/ 
SimpleFilterTest.java	2007-08-14 19:13:33.000000000 -0500
@@ -21,6 +21,7 @@
import junit.framework.TestSuite;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
+import org.apache.log4j.Appender;
import org.apache.log4j.util.Compare;
import org.apache.log4j.util.ControlFilter;
import org.apache.log4j.util.Filter;
@@ -29,6 +30,7 @@
import org.apache.log4j.util.SunReflectFilter;
import org.apache.log4j.util.Transformer;
import org.apache.log4j.xml.DOMConfigurator;
+import org.apache.log4j.xml.Log4jEntityResolver;
import org.w3c.dom.Document;
import javax.xml.parsers.DocumentBuilder;
@@ -69,6 +71,26 @@
      root.getLoggerRepository().resetConfiguration();
    }
+    public void test13() throws Exception {
+        String resourceName = "filteredsmtp.xml";
+        InputStream is = getClass().getResourceAsStream(resourceName);
+        if (is == null) {
+            throw new FileNotFoundException(
+                    "Could not find resource " + resourceName);
+        }
+        DocumentBuilderFactory factory =  
DocumentBuilderFactory.newInstance();
+        DocumentBuilder builder = factory.newDocumentBuilder();
+        builder.setEntityResolver(new Log4jEntityResolver());
+        Document doc = builder.parse(is);
+        org.apache.log4j.xml.DOMConfigurator.configure 
(doc.getDocumentElement());
+        Appender smtpAppender = Logger.getRootLogger().getAppender 
("SMTPAppender");
+        assertNotNull(smtpAppender);
+        org.apache.log4j.spi.Filter filter = smtpAppender.getFilter();
+        assertTrue(filter instanceof  
org.apache.log4j.filter.ExpressionFilter);
+        org.apache.log4j.spi.Filter filter2 = filter.getNext();
+        assertTrue(filter2 instanceof  
org.apache.log4j.filter.DenyAllFilter);
+    }
+

    public void test1() throws Exception {
      InputStream is = getClass().getResourceAsStream 
("simpleFilter1.xml");
@@ -122,10 +144,4 @@
      root.error("Message " + i, e);
    }

-  public static Test suite() {
-    TestSuite suite = new TestSuite();
-    suite.addTest(new SimpleFilterTest("test1"));
-    return suite;
-   }
-
}
diff -u -r apache-log4j-extras-1.0/src/test/resources/org/apache/ 
log4j/filter/filteredsmtp.xml apache-log4j-extras-patched/src/test/ 
resources/org/apache/log4j/filter/filteredsmtp.xml
--- apache-log4j-extras-1.0/src/test/resources/org/apache/log4j/ 
filter/filteredsmtp.xml	2007-08-14 19:20:20.000000000 -0500
+++ apache-log4j-extras-patched/src/test/resources/org/apache/log4j/ 
filter/filteredsmtp.xml	2007-08-14 19:01:49.000000000 -0500
@@ -1 +1,47 @@
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"  
debug="true">
+<appender name="SMTPAppender"
+class="org.apache.log4j.net.SMTPAppender">
+
+            <param name="SMTPHost" value="blah"/>
+
+            <param name="From" value="blah@rbs.com "/>
+
+            <param name="To" value="blah@rbs.com "/>
+
+            <param name="Subject" value="my subject"/>
+
+            <param name="BufferSize" value="50" />
+
+            <layout class="org.apache.log4j.PatternLayout">
+
+                        <param name="ConversionPattern"
+value="%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n"/>
+
+            </layout>
+
+            <filter
+class="org.apache.log4j.filter.ExpressionFilter">
+
+                        <param name="Expression" value="msg ~=
+blah" />
+
+                        <param name="AcceptOnMatch"
+value="true"/>
+
+                        <param name="ConvertInFixToPostFix"
+value="true"/>
+
+            </filter>
+
+            <filter
+class="org.apache.log4j.filter.DenyAllFilter"/>
+
+</appender>
+
+    <root>
+        <appender-ref ref="SMTPAppender"/>
+        <level value="DEBUG"/>
+    </root>
+
+</log4j:configuration>



To run, install Maven 2.0.7 on your path and then run "mvn test".   
You should get 339 test run and 0 errors or failures.  target/ 
surefire-reports/org...SimpleFilterTest.txt should list two  tests  
run or should contain details on the test failure on the new test.



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org


Mime
View raw message