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 Mark Womack <mw...@bevocal.com> on 2002/05/20 19:36:08 UTC
RE: [PATCH] jakarta-log4j/src/java/org/apache/log4j/varia NDCMatc
hFilter.java
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:ceki@qos.ch]
> 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:
<ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>