0
ヘルプが必要ですが、私はこの正規表現を通してApacheのログファイルを渡す必要がありますが、動作していない場合はfalseを返します。Regexがログファイルの各行に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ログのサンプルを含めましたが、pip( "|")で区切られています。
ありがとう@ brain99、パーサーのlibを使用して、私はyyyy-MM-dd.HH:mm:ss形式の '%{format} t'string形式で時刻を渡そうとしています。 –
もし私がリンクしているライブラリを使っているのであれば、ログフォーマットを正しく設定するだけです( '' logformat = "%h |%{%Y-%m-%d。%H:%M:%あなたは、日付をタイムスタンプとして取得するか、POJO内の個々のフィールドを持つかを選択することができます(年、月、day、...) – brain99
うわー、あなたは最高です... pipで区切られた任意のapacheログファイルに対して上記のlogformatの作業ができます。ありがとう –