yoavs 2003/06/06 19:31:49
Added: src/java/org/apache/log4j/filter
ThrowableClassMatchFilter.java
Log:
- Initial version of ThrowableClassMatchFilter
Revision Changes Path
1.1
jakarta-log4j-sandbox/src/java/org/apache/log4j/filter/ThrowableClassMatchFilter.java
Index: ThrowableClassMatchFilter.java
===================================================================
/*
* ============================================================================
* The Apache Software License, Version 1.1
* ============================================================================
*
* Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modifica-
* tion, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The end-user documentation included with the redistribution, if any, must
* include the following acknowledgment: "This product includes software
* developed by the Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself, if
* and wherever such third-party acknowledgments normally appear.
*
* 4. The names "log4j" and "Apache Software Foundation" must not be used to
* endorse or promote products derived from this software without prior
* written permission. For written permission, please contact
* [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache", nor may
* "Apache" appear in their name, without prior written permission of the
* Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
* DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* on behalf of the Apache Software Foundation. For more information on the
* Apache Software Foundation, please see <http://www.apache.org/>.
*
*/
package org.apache.log4j.filter;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.ThrowableInformation;
/**
* ThrowableClassMatchFiler matches a configured throwable
* instance name (e.g. java.io.IOException) against the
* Throwable, if any, in a logging event.
*
* <p>The filter admits two options <b>ThrowableClass</b> and
* <b>IncludeSubclass</b>.
*
* <p><b>ThrowableClass<b> is the exception class to match. If
* the <b>IncludeSubclasses</b> option is set to true, subclasses
* of the <b>ThrowableClass</b> will be considered a match.
*
* <p>For more information about how the logging event will be
* passed to the appender for reporting, please see
* the [EMAIL PROTECTED] MatchFilterBase} class.
*
* @author Yoav Shapira <[EMAIL PROTECTED]>
*
* @since 1.3
*/
public class ThrowableClassMatchFilter extends MatchFilterBase {
/**
* The throwable class to match.
*/
private Class throwableClass;
/**
* Whether subclasses of ThrowableClass
* should count as a match.
*/
private boolean includeSubclasses = true;
/**
* Sets the throwable class to match.
*
* @param throwableClass The throwable class
*/
public void setThrowableClass(Class throwableClass) {
this.throwableClass = throwableClass;
}
/**
* Returns the throwable class
* to match.
*
* @return Class
*/
public Class getThrowableClass() {
return throwableClass;
}
/**
* Sets whether subclasses of the throwableClass
* will match the filter or not.
*
* @param includeSubclasses True if subclasses match
*/
public void setIncludeSubclasses(boolean includeSubclasses) {
this.includeSubclasses = includeSubclasses;
}
/**
* Returns whether subclasses of the throwableClass
* are included as a match.
*
* @return True if subclasses match
*/
public boolean getIncludeSubclasses() {
return includeSubclasses;
}
/**
* Checks the given event to see if it has
* a throwable. If a throwable is present and its
* class exactly matches that of the <b>throwableClass</b>
* property, this method returns true. If
* <b>includeSubclasses</b> is set to true and the
* throwable is a subclass of <b>throwableClass<b>, then
* this method also returns true.
*
* @param event The logging event
* @return boolean True if matches criteria
*/
protected boolean match(LoggingEvent event) {
ThrowableInformation ti = event.getThrowableInformation();
if(ti == null) {
return false;
} else {
Throwable throwable = ti.getThrowable();
if(throwable == null) {
return false;
} else {
if(throwable.getClass().equals(getThrowableClass())) {
return true;
} else if(getIncludeSubclasses()) {
return (getThrowableClass().isInstance(throwable));
} else {
return false;
}
}
}
}
}
// End of class: ThrowableClassMatchFilter.java
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]