我是靠谱客的博主 漂亮小甜瓜,最近开发中收集的这篇文章主要介绍日志数据清洗(简单版),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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.运行结果

在这里插入图片描述

最后

以上就是漂亮小甜瓜为你收集整理的日志数据清洗(简单版)的全部内容,希望文章能够帮你解决日志数据清洗(简单版)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部