随笔

nginx 日志解析

有做折线图的需求
看了下 d3, 然后选择了 echarts

fs.readFile('www.mingshid.com.log', function (err, data) {
   if (err) {
       return console.error(err);
   }
   var contentArr = data.toString().split('\n');
   var objArr = [];
   var str = '',access_obj = {};
   var dayArr = [];
   for(var i=0; i<contentArr.length; i++){
       str = contentArr[i];
       if(str!=''){
           access_obj.ip = str.match(/[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}/)[0];
           access_obj.time = str.split('"')[0].split('[')[1].split(']')[0].replace(':',' ');
           access_obj.method = str.split('"')[1].split(' ')[0];
           access_obj.userAgent = str.split('"')[5];
           access_obj.path = str.split('"')[1].split(' ')[1];
           access_obj.http = str.split('"')[1].split(' ')[2];
           access_obj.status_code = str.split('"')[2].split(' ')[1];
           access_obj.content_length = str.split('"')[2].split(' ')[2];
           objArr.push(access_obj);
       }
   }
   fs.writeFile('day-group.json',JSON.stringify(dayArr),function(err){
       if(err){
           return console.log(err);
       }
       console.log('保存成功!');
   })
});

这些代码基本就够用了
数据更新也是一个问题

更新数据的时候遇到一个问题
那个网站日志全是一个文件里的,并没有每天生成一个
每天怎么更新到数据库? 暂时想到的方法是匹配最后一个时间

本文链接:https://note.lilonghe.net/post/read-nginx-log.html

-- EOF --