网站日志解析后并生成可读文件


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  即可插入定时启动脚本的命令

原文地址:https://www.cnblogs.com/master-zxc/p/6478042.html