zoukankan      html  css  js  c++  java
  • 网站日志解析后并生成可读文件


    public class ObjectOutTest {
    ///* 将对象写入文件方法 */
    //public void write(Object o, String path) {
    // try {
    // /* 创建存取文件 */
    // FileOutputStream fileStream = new FileOutputStream(path);
    // /* 将存取文件写入对象 */
    // ObjectOutputStream os = new ObjectOutputStream(fileStream);
    // /* 写入对象 */
    // os.writeObject(o);
    // System.out.println("写入数据成功");
    // /* 关闭ObjectOutputStream */
    // os.close();
    // } catch (FileNotFoundException e) {
    // e.printStackTrace();
    // } catch (IOException e) {
    // e.printStackTrace();
    // }
    //}
    ///* 将对象从文件中读出来 */
    //public void read(String path) {
    // try {
    // /* 连接到要读取的文件 */
    // FileInputStream fileStream = new FileInputStream(path);
    // /* 怎样读取连接到的文件 */
    // ObjectInputStream os = new ObjectInputStream(fileStream);
    // /* 读取对象 */
    // LogObject dog = (LogObject) os.readObject();
    // System.out.println("输出结果:" + dog.getFrom() + " is a "
    // + dog.getIp() + ",高:" + dog.getUrl() + ",长:");
    // /* 关闭对象 */
    // os.close();
    // } catch (FileNotFoundException e) {
    // e.printStackTrace();
    // } catch (IOException e) {
    // e.printStackTrace();
    // } catch (ClassNotFoundException e) {
    // e.printStackTrace();
    // }
    //}
    /* 往文件写入字符串 */
    public void wirteString(String path, String context) {
    try {
    /* 创建写入对象 */
    FileWriter fileWriter = new FileWriter(path,true);
    /* 创建缓冲区 */
    BufferedWriter writer = new BufferedWriter(fileWriter);
    /* 写入字符串 */
    writer.write(" "+context);
    /* 关掉对象 */
    writer.close();
    System.out.println("写入字符串成功!");
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    /* 读取文件中的字符串 */
    public void readString(String path) {
    try {
    /* 创建读取对象 */
    FileReader fileReader = new FileReader(path);
    /* 创建缓存区 */
    BufferedReader reader = new BufferedReader(fileReader);
    /* 读取文件 */
    String line = null;
    while ((line = reader.readLine()) != null) {
    String s[]=line.split(" ");
    String str1="";
    for(int i=0;i<s.length;i++){
    if(i==0||i==3||i==6||i==10){
    if(i==0){
    str1+="ip:"+"--"+s[i]+" ";
    }
    if(i==3){
    str1+="访问时间:"+"--"+s[i]+" ";
    }
    if(i==6){
    str1+="url:"+"--"+s[i]+" ";
    }
    if(i==10){
    if(s[10].contains("baidu.com")){
    str1+="站外(百度竞价):"+"--"+s[i]+" ";
    }else{
    str1+="内部:"+"--"+s[i]+" ";
    }

    }
    //内部 百度竞价 直接访问 站外

    }

    //System.out.println(str1);
    }
    if(s[6].contains(".jpg")||s[6].contains(".png")||s[6].contains(".ico")||s[6].contains("/app/api")||s[6].contains(".gif")||s[6].contains(".css")||s[6].contains(".js")){
    }else{
    ObjectOutTest qqt = new ObjectOutTest();
    Date date=new Date();
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    String s1=sdf.format(date);
    qqt.wirteString("/home/data/htdocs/web/log/"+s1+".csv", str1);
    }

    }

    /* 关闭对象 */
    reader.close();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    /* 出函数入口 */
    public static void main(String args[]) {
    ObjectOutTest qqt = new ObjectOutTest();
    Date date=new Date();
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    String s=sdf.format(date);
    qqt.readString("/home/logsplit/"+s);


    }
    }

    写完方法生成 jar包,再将jar包放到线上,同时写一个运行jar包的脚本。

    cd /home/timer/
    export JAVA_HOME=/opt/jdk7
    export CLASSPATH=.:$CLASSPATH:/home/timer/rizhijiexi.jar:
    export PATH=$JAVA_HOME/bin:$PATH

    java -Xms256m -Xmx512m com.ObjectOutTest >>/home/logsplit/ObjectOut.log &
    将 运行脚本文件放在 /opt/shell 下

    然后 

    运行 crontab -e 再输入 O  即可插入定时启动脚本的命令

  • 相关阅读:
    QML与C++交互
    etcd集群搭建
    Mac book如何允许第三方未知来源程序安装详细教程(小白篇)
    Windows10下搭建基于VSCODE的RISC-V单片机CH32V103开发环境
    Linux的JAVA开发环境部署
    source 'https://api.nuget.org/v3/index.json': The author primary signature validity period has expired
    element-ui + vue ,ant-design + vue , Angular + ZORRO 实现表格自动横纵向合并单元格,并自动根据单元格数据进行添加样式
    VUE Angular通用动态列表组件-亦可为自动轮播组件-01-根据数据量自动纵向滚动,鼠标划入停止滚动
    VUE Angular通用动态列表组件-亦可为自动轮播组件-02-根据数据量自动横向滚动,鼠标划入停止滚动
    echarts系列-样式调整总结
  • 原文地址:https://www.cnblogs.com/master-zxc/p/6478042.html
Copyright © 2011-2022 走看看