0
需要幫助,我需要通過此正則表達式傳遞apache日誌文件但不工作,返回false。正則表達式在日誌文件中傳遞Apache每行
private String accessLogRegex()
{
String regex1 = "^([\\d.]+)"; // Client IP
String regex2 = " (\\S+)"; // -
String regex3 = " (\\S+)"; // -
String regex4 = " \\[([\\w:/]+\\s[+\\-]\\d{4})\\]"; // Date
String regex5 = " \"(.+?)\""; // request method and url
String regex6 = " (\\d{3})"; // HTTP code
String regex7 = " (\\d+|(.+?))"; // Number of bytes
String regex8 = " \"([^\"]+|(.+?))\""; // Referer
String regex9 = " \"([^\"]+|(.+?))\""; // Agent
return regex1+regex2+regex3+regex4+regex5+regex6+regex7+regex8+regex9;
}
Pattern accessLogPattern = Pattern.compile(accessLogRegex());
Matcher entryMatcher;
String log = "64.242.88.10 | 2004-07-25.16:36:22 | "GET /twiki/bin/rdiff/Main/ConfigurationVariables HTTP/1.1" 401 1284 | Mozilla/4.6 [en] (X11; U; OpenBSD 2.8 i386; Nav)";
entryMatcher = accessLogPattern.matcher(log);
if(!entryMatcher.matches()){
System.out.println("" + index +" : couldn't be parsed");
}
我已經包含apache日誌的樣本,它的點(「|」)分開。
謝謝@ brain99,使用解析器lib,我試圖以這種格式傳遞時間yyyy-MM-dd.HH:mm:ss用於'%{format} t'string。 –
如果使用我鏈接的庫,當然 - 只需配置日誌格式正確(我相信它應該像'String logformat =「%h |%{%Y-%m-%d。%H:%M:%然後,您可以選擇將日期作爲時間戳檢索,或者在您的POJO(年份,月份)中包含單個字段,天,...) – brain99
哇,你是最好的...請能夠上面的logformat工作爲由pip分隔的任何apache日誌文件謝謝 –