Description:
LogFilter is a basic implementation of Filter interface. This implementation
will keep a record of the filtered strings to avoid repeating the process
unnecessarily.
The current implementation supports replacing the file extension. The reason
for supporting this is from first hand experience porting an existing website
to Tomcat + JSP. Later on we may want to provide the ability to replace the
whole filename. If the need materializes, we can add it later.
Example of how to use it is provided in the main method. An example is
provided below.
testf = new LogFilter();
String[] incl = { "hello.html", "index.html", "/index.jsp" };
String[] thefiles = { "/test/hello.jsp", "/test/one/hello.html", "hello.jsp", "hello.htm", "/test/open.jsp",
"/test/open.html", "/index.jsp", "/index.jhtml", "newindex.jsp", "oldindex.jsp", "oldindex1.jsp",
"oldindex2.jsp", "oldindex3.jsp", "oldindex4.jsp", "oldindex5.jsp", "oldindex6.jsp", "/test/index.htm" };
testf.excludeFiles(incl);
System.out.println(" ------------ exclude test -------------");
for (int idx = 0; idx < thefiles.length; idx++) {
boolean fl = testf.isFiltered(thefiles[idx]);
String line = testf.filter(thefiles[idx]);
if (line != null) {
System.out.println("the file: " + line);
}
}
As a general note. Both isFiltered and filter() have to be called. Calling
either one will not produce the desired result. isFiltered(string) will tell
you if a string should be filtered. The second step is to filter the string,
which will return null if it is filtered and replace any part of the string
that should be replaced.
CHANGEEXT
protected boolean CHANGEEXT
protected members used by class to filter *
EXCFILE
protected String[] EXCFILE
EXCPATTERNS
protected ArrayList EXCPATTERNS
EXCPTRN
protected String[] EXCPTRN
FILEFILTER
protected boolean FILEFILTER
INCFILE
protected String[] INCFILE
INCPATTERNS
protected ArrayList INCPATTERNS
INCPTRN
protected String[] INCPTRN
NEWEXT
protected String NEWEXT
NEWFILE
protected String NEWFILE
OLDEXT
protected String OLDEXT
PTRNFILTER
protected boolean PTRNFILTER
USEFILE
protected boolean USEFILE
createPattern
public Pattern createPattern(String pattern)
create a new pattern object from the string.
excFile
public boolean excFile(String text)
Method implements the logic for filtering file name exclusion. The method
iterates through the array and uses indexOf. Once it finds a match, it
won't bother with the rest of the filenames in the array.
excPattern
protected boolean excPattern(String text)
The method assumes by default the text is not excluded. If the text
matches the pattern, it will then return true.
excludeFiles
public void excludeFiles(String[] filenames)
Give the filter a list of files to exclude
- excludeFiles in interface Filter
org.apache.jmeter.protocol.http.util.accesslog.Filter.excludeFiles(java.lang.String[])
excludePattern
public void excludePattern(String[] regexp)
Give the filter a set of regular expressions to filter with for
exclusion. This method hasn't been fully implemented and test yet. The
implementation is not complete.
- excludePattern in interface Filter
filter
public String filter(String text)
The current implementation checks the boolean if the text should be used
or not. isFilter( string) has to be called first.
- filter in interface Filter
org.apache.jmeter.protocol.http.util.accesslog.Filter.filter(java.lang.String)
filterFile
protected boolean filterFile(String file)
Filter the file. The implementation performs the exclusion first before
the inclusion. This means if a file name is in both string arrays, the
exclusion will take priority. Depending on how users expect this to work,
we may want to change the priority so that inclusion is performed first
and exclusion second. Another possible alternative is to perform both
inclusion and exclusion. Doing so would make the most sense if the method
throws an exception and tells the user the same filename is in both the
include and exclude array.
filterPattern
protected boolean filterPattern(String text)
The current implemenation assumes the user has checked the regular
expressions so that they don't cancel each other. The basic assumption is
the method will return true if the text should be filtered. If not, it
will return false, which means it should not be filtered.
incFile
public boolean incFile(String text)
Method implements the logic for filtering file name inclusion. The method
iterates through the array and uses indexOf. Once it finds a match, it
won't bother with the rest of the filenames in the array.
incPattern
protected boolean incPattern(String text)
By default, the method assumes the entry is not included, unless it
matches. In that case, it will return true.
includeFiles
public void includeFiles(String[] filenames)
Give the filter a list of files to include
- includeFiles in interface Filter
org.apache.jmeter.protocol.http.util.accesslog.Filter.includeFiles(java.lang.String[])
includePattern
public void includePattern(String[] regexp)
Give the filter a set of regular expressions to filter with for
inclusion. This method hasn't been fully implemented and test yet. The
implementation is not complete.
- includePattern in interface Filter
isFiltered
public boolean isFiltered(String path,
TestElement el)
In the case of log filtering the important thing is whether the log entry
should be used. Therefore, the method will only return true if the entry
should be used. Since the interface defines both inclusion and exclusion,
that means by default inclusion filtering assumes all entries are
excluded unless it matches. In the case of exlusion filtering, it assumes
all entries are included unless it matches, which means it should be
excluded.
- isFiltered in interface Filter
replaceExtension
public boolean replaceExtension(String text)
Method uses indexOf to replace the old extension with the new extesion.
It might be good to use regular expression, but for now this is a simple
method. The method isn't designed to replace multiple instances of the
text, since that isn't how file extensions work. If the string contains
more than one instance of the old extension, only the first instance will
be replaced.
setReplaceExtension
public void setReplaceExtension(String oldext,
String newext)
The method will replace the file extension with the new one. You can
either provide the extension without the period ".", or with. The method
will check for period and add it if it isn't present.
- setReplaceExtension in interface Filter
org.apache.jmeter.protocol.http.util.accesslog.Filter.setReplaceExtension(java.lang.String,
java.lang.String)