Feedback

C# - Apache Log File Parsen (Regex)

Veröffentlicht von am 05.06.2015
(0 Bewertungen)
Mit dem Regex kann man eine Zeile aus einer Apache Log File einfach zerlegen.

Dieses Snippet ist eine C#-Portierung.
Das original Java Snippet:
http://www.java2s.com/Code/Java/Development-Class/ParseanApachelogfilewithRegularExpressions.htm

Das Logformat von Apache ist variabel.
Somit muss dieses Regex ggf. angepasst werden!
/** The sample log entry to be parsed. */
string logEntryLine = "123.45.67.89 - - [27/Oct/2000:09:27:09 -0400] \"GET /java/javaResources.html HTTP/1.0\" 200 10450 \"-\" \"Mozilla/4.6 [en] (X11; U; OpenBSD 2.8 i386; Nav)\"";

string logEntryPattern = "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3}) (\\d+) \"([^\"]+)\" \"([^\"]+)\"";

Match regexMatch = Regex.Match(logEntryLine, logEntryPattern);

Console.WriteLine("IP Address: " + regexMatch.Groups[1].Value);
Console.WriteLine("Date&Time: " + regexMatch.Groups[4].Value);
Console.WriteLine("Request: " + regexMatch.Groups[5].Value);
Console.WriteLine("Response: " + regexMatch.Groups[6].Value);
Console.WriteLine("Bytes Sent: " + regexMatch.Groups[7].Value);
if (!regexMatch.Groups[8].Value.Equals("-"))
	Console.WriteLine("Referer: " + regexMatch.Groups[8].Value);
Console.WriteLine("Browser: " + regexMatch.Groups[9].Value);
Abgelegt unter apache, log, regex.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!