Guten Tag,
ich möchte mit einem Programm einen Ausschnitt einer Logfile auslesen. Die text Datei enthält dabei nur die zeile (183.121.143.32 - - [18/Mar/2003:08:05:03 +0200] "GET /images/bild.png HTTP/1.1" 200 805 "http://www.google.org/")
Wenn ich die zeile in einem Interface einbaue und nicht aus einer text datei lesen lasse funktioniert das auch. Allerdings kriege ich jetzt immer den Fehler IllegalStateException.
Habe schon verschiedene arten des einlesen ausprobiert aber nichts hat zum erfolg geführt.
Ich hoffe sehr das ihr mir helfen könnt.
ich möchte mit einem Programm einen Ausschnitt einer Logfile auslesen. Die text Datei enthält dabei nur die zeile (183.121.143.32 - - [18/Mar/2003:08:05:03 +0200] "GET /images/bild.png HTTP/1.1" 200 805 "http://www.google.org/")
Wenn ich die zeile in einem Interface einbaue und nicht aus einer text datei lesen lasse funktioniert das auch. Allerdings kriege ich jetzt immer den Fehler IllegalStateException.
Habe schon verschiedene arten des einlesen ausprobiert aber nichts hat zum erfolg geführt.
Ich hoffe sehr das ihr mir helfen könnt.
Java:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class logfileRead {
public static void main(String[] argv) throws IOException {
int NUM_FIELDS = 9;
Pattern pattern = Pattern
.compile("^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3}) (\\d+) \"([^\"]+)\" \"([^\"]+)\"");
String test = new String("183.121.143.32");
try {
BufferedReader br = new BufferedReader(new FileReader("test.txt"));
while ((test = br.readLine()) != null) {
System.out.println(test);
Matcher matcher = pattern.matcher(test);
if (!matcher.matches() || NUM_FIELDS != matcher.groupCount()) {
System.err
.println("Ungueltiger Log eintrag oder falscher Patter?:");
System.err.println(test);
return;
}
System.out.println("IP Address: " + matcher.group(1));
System.out.println("Date&Time: " + matcher.group(4));
System.out.println("Request: " + matcher.group(5));
System.out.println("Response: " + matcher.group(6));
System.out.println("Bytes Sent: " + matcher.group(7));
if (!matcher.group(8).equals("-"))
System.out.println("Referer: " + matcher.group(8));
System.out.println("Browser: " + matcher.group(9));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Zuletzt bearbeitet: