Ceki, Thanks, I will apply the patch later tonight. Anything to make this more understandable is a good thing.
-Mark > -----Original Message----- > From: Ceki Gülcü [mailto:[EMAIL PROTECTED]] > Sent: Monday, May 20, 2002 5:23 AM > To: Log4J Developers List > Subject: [PATCH] jakarta-log4j/src/java/org/apache/log4j/varia > NDCMatchFilter.java > > > > Mark, > > Good work on the NDCMatchFilter and the associated test cases. Here is > an attempt to improve on the NDCMatchFilter documentation. Other > filters should also benefit from similar changes. You might want to > apply this patch in case you find that it improves on the existing. > > Index: src/java/org/apache/log4j/varia/NDCMatchFilter.java > =================================================================== > RCS file: > /home/cvs/jakarta-log4j/src/java/org/apache/log4j/varia/NDCMat > chFilter.java,v > retrieving revision 1.2 > diff -u -r1.2 NDCMatchFilter.java > --- src/java/org/apache/log4j/varia/NDCMatchFilter.java 20 May 2002 > 09:52:58 -0000 1.2 > +++ src/java/org/apache/log4j/varia/NDCMatchFilter.java 20 May 2002 > 12:22:00 -0000 > @@ -16,20 +16,26 @@ > This is a simple filter based on {@link NDC} value matching. > > <p>The filter admits three options <b>ValueToMatch</b> and > - <b>ExactMatch</b> and <b>AcceptOnMatch</b>. If <b>ExactMatch</b> > - is set to true, then the <b>ValueToMatch</b> must exactly match > - the NDC value of the {@link LoggingEvent}. By default the filter > - will match if the <b>ValueToMatch</b> is "contained" in the NDC > - value. Also by default, the <b>ValueToMatch</b> is set to null > - and will only match when the NDC stack is empty. > + <b>ExactMatch</b> and <b>AcceptOnMatch</b>. > > - <p>If the filter matches between the configured > - <b>ValueToMatch</b> and the NDC value of the {@link > - LoggingEvent}, then the {@link #decide} method returns {@link > - Filter#ACCEPT} in case the <b>AcceptOnMatch</b> option value > - is set to <code>true</code>, if it is <code>false</code> then > - {@link Filter#DENY} is returned. If there is no match, > - {@link Filter#NEUTRAL} is returned. > + <p>If a match occurs, then the {@link #decide decide} method > + returns {@link Filter#ACCEPT} but only in case the > + <b>AcceptOnMatch</b> option value is set to <code>true</code>, if > + it is set to <code>false</code> then {@link Filter#DENY} is > + returned. If no match occurs, the {@link #decide decide} method > + returns {@link Filter#NEUTRAL}. > + > + <p>As the name indicates, the value of > <b>ValueToMatch</b> property > + determines the string value to match. If <b>ExactMatch</b> is set > + to true, a match will occur only when the value to match exactly > + matches the NDC value of the logging event. Otherwise, if the > + <b>ExactMatch</b> property is set to <code>false</code>, a match > + will occur if the NDC value is contained anywhere within the value > + to match. The <b>ExactMatch</b> property is set to > + <code>false</code> by default. > + > + <p>Note that by default the value to match is set to > + <code>null</code> and will only match an empty NDC stack. > > @author Mark Womack > > > > > At 06:20 20.05.2002 +0000, mwomack@ apache.org wrote: > >mwomack 02/05/19 23:20:32 > > > > Added: src/java/org/apache/log4j/varia NDCMatchFilter.java > > Log: > > Added NDCMatchFilter which can be used to select > LoggingEvents based on > > exact or contained matches of its NDC value. > > > > Revision Changes Path > > 1.1 > > jakarta-log4j/src/java/org/apache/log4j/varia/NDCMatchFilter.java > > > > Index: NDCMatchFilter.java > > > =================================================================== > > /* > > * Copyright (C) The Apache Software Foundation. All > rights reserved. > > * > > * This software is published under the terms of the > Apache Software > > License > > * version 1.1, a copy of which has been included with this > > distribution in > > * the LICENSE.APL file. > > */ > > > > package org.apache.log4j.varia; > > > > import org.apache.log4j.NDC; > > import org.apache.log4j.spi.Filter; > > import org.apache.log4j.spi.LoggingEvent; > > import org.apache.log4j.helpers.OptionConverter; > > > > /** > > This is a simple filter based on {@link NDC} value matching. > > > > <p>The filter admits three options <b>ValueToMatch</b> and > > <b>ExactMatch</b> and <b>AcceptOnMatch</b>. If > <b>ExactMatch</b> > > is set to true, then the <b>ValueToMatch</b> must exactly match > > the NDC value of the {@link LoggingEvent}. By default > the filter > > will match if the <b>ValueToMatch</b> is "contained" in the NDC > > value. Also by default, the <b>ValueToMatch</b> is set to null > > and will only match when the NDC stack is empty. > > > > <p>If the filter matches between the configured > > <b>ValueToMatch</b> and the NDC value of the {@link > > LoggingEvent}, then the {@link #decide} method returns {@link > > Filter#ACCEPT} in case the <b>AcceptOnMatch</b> option value > > is set to <code>true</code>, if it is <code>false</code> then > > {@link Filter#DENY} is returned. If there is no match, > > {@link Filter#NEUTRAL} is returned. > > > > @author Mark Womack > > > > @since 1.3 */ > > public class NDCMatchFilter extends Filter { > > > > /** > > Do we return ACCEPT when a match occurs. Default is > > <code>true</code>. */ > > boolean acceptOnMatch = true; > > > > /** > > The value to match in the NDC value of the LoggingEvent. */ > > String valueToMatch; > > > > /** > > Do we look for an exact match or just a "contains" match? */ > > boolean exactMatch = false; > > > > /** > > Sets the value to match in the NDC value of the > LoggingEvent. */ > > public > > void setValueToMatch(String value) { > > valueToMatch = value; > > } > > > > /** > > Gets the value to match in the NDC value of the > LoggingEvent. */ > > public > > String getValueToMatch() { > > return valueToMatch; > > } > > > > /** > > Set to true if configured value must exactly match the NDC > > value of the LoggingEvent. Set to false if the configured > > value must only be contained in the NDC value of the > > LoggingEvent. Default is false. */ > > public > > void setExactMatch(boolean exact) { > > exactMatch = exact; > > } > > > > public > > boolean getExactMatch() { > > return exactMatch; > > } > > > > /** > > If true, then the filter will return {@link Filter#ACCEPT} > > if the filter matches the configured value. If false, then > > {@link Filter#DENY} is returned. Default setting is true. */ > > public > > void setAcceptOnMatch(boolean acceptOnMatch) { > > this.acceptOnMatch = acceptOnMatch; > > } > > > > /** > > Gets the AcceptOnMatch value. */ > > public > > boolean getAcceptOnMatch() { > > return acceptOnMatch; > > } > > > > /** > > Return the decision of this filter. > > > > If there is a match, then the returned decision is {@link > > Filter#ACCEPT} if the <b>AcceptOnMatch</b> property is set > > to <code>true</code>. The returned decision is {@link > > Filter#DENY} if the <b>AcceptOnMatch</b> property is set > > to false. */ > > public > > int decide(LoggingEvent event) { > > > > // get the ndc value for the event > > String eventNDC = event.getNDC(); > > > > // check for a match > > boolean matchOccured = false; > > if (eventNDC == null) { > > if (valueToMatch == null) > > matchOccured = true; > > } else { > > if (valueToMatch != null) { > > if (exactMatch) { > > matchOccured = eventNDC.equals(valueToMatch); > > } else { > > matchOccured = (eventNDC.indexOf(valueToMatch) != -1); > > } > > } > > } > > > > if(matchOccured) { > > if(this.acceptOnMatch) > > return Filter.ACCEPT; > > else > > return Filter.DENY; > > } else { > > return Filter.NEUTRAL; > > } > > } > > } > > > > -- > Ceki > > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>