以下代码可以通过使用Regular Expressions分析Apache日志。有个group可以读出时间,你判断少于30分钟就行了~
import java.util.regex.*;/** * Parse an Apache log file with Regular Expressions */public class LogRegExp implements LogExample { public static void main(String argv[]) { String logEntryPattern = "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3})(\\d+) \"([^\"]+)\" \"([^\"]+)\""; System.out.println("Using regex Pattern:"); System.out.println(logEntryPattern); System.out.println("Input line is:"); System.out.println(logEntryLine); Pattern p = Pattern.compile(logEntryPattern); Matcher matcher = p.matcher(logEntryLine); if (!matcher.matches( ) || NUM_FIELDS != matcher.groupCount( )) { System.err.println("Bad log entry (or problem with regex?):"); System.err.println(logEntryLine); 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)); }}Using regex Pattern:^([\d.]+) (\S+) (\S+) \[([\w:/]+\s[+\-]\d{4})\] "(.+?)" (\d{3}) (\d+) "([^"]+)""([^"]+)"Input line is: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)"IP Address: 123.45.67.89Date&Time: 27/Oct/2000:09:27:09 -0400Request: GET /java/javaResources.html HTTP/1.0Response: 200Bytes Sent: 10450Browser: Mozilla/4.6 [en] (X11; U; OpenBSD 2.8 i386; Nav)
import java.util.regex.*;/** * Parse an Apache log file with Regular Expressions */public class LogRegExp implements LogExample { public static void main(String argv[]) { String logEntryPattern = "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3})(\\d+) \"([^\"]+)\" \"([^\"]+)\""; System.out.println("Using regex Pattern:"); System.out.println(logEntryPattern); System.out.println("Input line is:"); System.out.println(logEntryLine); Pattern p = Pattern.compile(logEntryPattern); Matcher matcher = p.matcher(logEntryLine); if (!matcher.matches( ) || NUM_FIELDS != matcher.groupCount( )) { System.err.println("Bad log entry (or problem with regex?):"); System.err.println(logEntryLine); 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)); }}Using regex Pattern:^([\d.]+) (\S+) (\S+) \[([\w:/]+\s[+\-]\d{4})\] "(.+?)" (\d{3}) (\d+) "([^"]+)""([^"]+)"Input line is: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)"IP Address: 123.45.67.89Date&Time: 27/Oct/2000:09:27:09 -0400Request: GET /java/javaResources.html HTTP/1.0Response: 200Bytes Sent: 10450Browser: Mozilla/4.6 [en] (X11; U; OpenBSD 2.8 i386; Nav)
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货