以下代码可以通过使用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)