概述
1.数据情况
每行记录有5部分组成:访问者IP
、访问时间
、访问资源
、访问状态(HTTP状态码)
、本次访问流量
如:
27.19.74.143 - - [30/May/2018:17:38:20 +0800] “GET /static/image/common/faq.gif HTTP/1.1” 200 1127
2.代码实现
创建ParserLog
类:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
/**
* Author : WGH and wgh
* Version : 2020/5/3 $ 1.0
* 解析日志
* ip
* 时间
* url
* 状态码
* 流量
*/
public class ParserLog {
public static final SimpleDateFormat FORMAT = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss", Locale.ENGLISH);
public static final SimpleDateFormat FORMATDATE = new SimpleDateFormat("yyyyMMddHHmmss");
/**
* 解析ip
* @param line 日志中的一行数据
* 27.19.74.143 - - [30/May/2018:17:38:20 +0800] "GET /static/image/common/faq.gif HTTP/1.1" 200 1127
* */
public String parserIp(String line){
String[] ips = line.split("- -");
String ip = ips[0].trim();
return ip;
}
/**
* 解析时间
* */
public String parserTime(String line){
//其实索引
int first = line.indexOf("[");
//结束索引
int last = line.indexOf("+0800]");
//获取日志时间
String time = line.substring(first+1,last);
//进行格式化
//1.现将日志时间格式化为时间戳:日志时间格式d/MMM/yyyy:HH:mm:ss
Date parse = null;
try {
parse = FORMAT.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
//2.将时间戳格式化yyyyMMddHHmmss
return FORMATDATE.format(parse);
}
/**
* 解析url
* */
public String parserUrl(String line){
//获取起始索引
int indexOf = line.indexOf(""");
//结尾索引
int lastIndexOf = line.lastIndexOf(""");
//截取url
return line.substring(indexOf + 1,lastIndexOf);
}
/**
* 解析状态码
* */
public String parserStatus(String line){
String trim = line.substring(line.lastIndexOf(""")+1).trim();
return trim.split(" ")[0];
}
/**
* 解析流量
* */
public String parserFlow(String line){
String trim = line.substring(line.lastIndexOf(""") + 1).trim();
return trim.split(" ")[1];
}
/**
* 组装数据
* ip 时间 url 状态码 流量
* */
public String[] parser(String line){
String ip = parserIp(line);
String time = parserTime(line);
String url = parserUrl(line);
String status = parserStatus(line);
String flow = parserFlow(line);
return new String[]{ip,time,url,status,flow};
}
public static void main(String[] args){
ParserLog parserLog = new ParserLog();
String[] parser = parserLog.parser("27.19.74.143 - - [30/May/2018:17:38:20 +0800] "GET /static/image/common/faq.gif HTTP/1.1" 200 1127");
for (String s : parser){
System.out.println(s);
}
}
}
3.运行结果
最后
以上就是漂亮小甜瓜为你收集整理的日志数据清洗(简单版)的全部内容,希望文章能够帮你解决日志数据清洗(简单版)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复