解析tomcat的log日志文件,用于统计PV,UV
SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd");
Date date = new Date();
List<String> list = new ArrayList();
list = count.readLog(Key.LOG_ADDR + format.format(date) + ".txt");
LinkedHashMap<String,Map<String,String>> linkmap = new LinkedHashMap<String,Map<String,String>>();
String ip = "";
for(int i=0;i<list.size();i++){
if(list.get(i).indexOf("sid=") != -1){
Map<String,String> map = new HashMap<String,String>();
int pv = 1;
int uv = 1;
ip = list.get(i).substring(0, list.get(i).indexOf(" - - ["));
System.out.println("info::" + list.get(i));
System.out.println("ip::" + ip);
//判断此IP是否存在值
if(linkmap.get(ip) != null && linkmap.get(ip).size() > 0){
uv = Integer.parseInt(linkmap.get(ip).get("uv")) + 1;
}
map.put("pv", "" + pv);
map.put("uv", "" + uv);
linkmap.put(ip, map);
}
}
linkmap存的结果为:
121.0.0.1:{uv=3, pv=1}
192.168.1.214:{uv=1, pv=1}
192.168.1.122:{uv=2, pv=1}
开始遍历:(1适用)
1. key不是有序的Id
//循环同一个IP的pv uv值for(Map.Entry<String,Map<String,String>> entry : linkmap.entrySet()) {
System.out.println(entry.getKey()+":"+entry.getValue());
//System.out.println(entry.getKey()+":"+entry.getValue().get("uv"));
}
2. key是有序的id
for(int i=0;i<linkmap.size();i++){
System.out.println(linkmap.get(i));
}