实时读取tomcat 下localhost_access_log 文件,将用户的请求信息记录到数据库方便分析 static{jfinalConfig.mainInit();logs = PropKit.get("logs");task = new AbstractTaskPool (5) { //参考https://gitee.com/lxycx_xc/codes/
static{
jfinalConfig.mainInit();
logs = PropKit.get("logs");
task = new AbstractTaskPool
(5) {
//参考https://gitee.com/lxycx_xc/codes/v1czm3akjqdu58txlp2eg87
@Override
protected boolean exec(String len) throws Exception {
//String[] datas = len.split(" ");
//0,1IP,4时间,5请求方式 6访问的URL,7访问协议8返回标识,9数据大小
return parse(len);//对一行日志进行处理
}
};
}
public static void main(String[] args) throws FileNotFoundException{
String day = DateUtil.toDay("yyyy-MM-dd");
int index=Log2db.findLen(day);//查询数据库从指定的位置开始读取
while(true){
if((index= reader(index,day))==0){//如果index 返回0 说明已经是第二天了,需要更新下文件名称
day = DateUtil.toDay("yyyy-MM-dd");
}
}
}
/**
* 日志读取核心操作
* @author lxycx_xc
*/
public static int reader(int line,String day) throws FileNotFoundException{//从指定行数开始读取
String filename = "localhost_access_log."+day+".txt";
File file = new File(logs+filename);
BufferedReader br = new BufferedReader(new FileReader(file),1048576);
//long d1 = System.currentTimeMillis();
long filelen = file.length();
int index=0;
String len;
while(true){
try {
len = br.readLine();
} catch (Exception e) {//如果读取数据发生意外退出,返回当前读取的行数
try {
br.close();
} catch (IOException e1) {
e1.printStackTrace();
}
return index;
}
if(++index>line){//即将读取的行数
if(len!=null){
//开始读取
if(len.indexOf(".mp4")>=0||len.indexOf(".MP4")>=0){
Log2db.upLen(day,index);
task.offer(len+" "+day+" "+index);//添加待处理任务
}
}else{
if(DateUtil.toDay("yyyy-MM-dd").equals(day)||filelen
