Filters
Filters can be used to limit the output generated by a logger. Only log request that matches the filter will pass it. Every filter must be declared in a filter block. Every logger or LogPipe can then reference the filter. This way a filter can be reused by different loggers or pipes.
Here is an example about how to define such filters:
<filter name="ExceptionFilter">
<class>TextFilter</class>
<parameter name="expression" value="Exception"/>
</filter>
<filter name="RegExFilter">
<class>RegExFilter</class>
<parameter name="expression" value="[0-9]+\.[0-9]+"/>
</filter>
There are two filters included. If you use one of these then you do not have to define the full qualified class name. If you are going to use your own filter then you need to define the full qualified class name of your filter.
TextFilter
The text filter will search for the given text and only if the text is present will succeed.
The RegExFilter
This filter uses regular expression to check the log request. Describing how to use regular expression is not part of this documentation.
Writing your own filter
If you want to implement your own filter then your class needs to implement the LogFilter interface.
Here is a simple example:
package org.foo.logging;
import java.util.Map;
public class CaseSensitiveTextFilter implements LogFilter {
private String expression;
public TextFilter() {
}
public boolean match(String message) {
if ( message != null ) {
if ( message.indexOf(expression) != -1 ) {
return true;
}
}
return false;
}
public void setParameters(Map parameter) {
if ( parameter.containsKey("expression") ) {
expression = (String)parameter.get("expression");
}
}
}
Now you can define this filter:
<filter name="ExceptionFilter">
<class>org.foo.logging.CaseSensitiveTextFilter</class>
<parameter name="expression" value="Exception"/>
</filter>