java解析apache日志_解析Apache日志文件,正则表达式

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class LogRegExp {

/** The number of fields that must be found. */

public static final int NUM_FIELDS = 9;

/** The sample log entry to be parsed. */

public static final 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)\"";

public static void main(String argv[]) {

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

System.out.println("Using RE 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 RE?):");

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));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值