搜索
查看: 15003|回复: 99

[文本分析] Apache|Nginx日志分析工具

    [复制链接]

53

主题

277

帖子

1733

积分

四级会员

Rank: 6Rank: 6

积分
1733
发表于 2012-11-9 17:54:16 | 显示全部楼层 |阅读模式
本帖最后由 winner 于 2012-11-9 21:09 编辑

1个小时写完,很简单就是分割字符串而已

可查看含有某些字符的项目,

例如 baidu.,
也可以用模式匹配语法 例如这样 404.*?baidu

PS:发现apache的日志也是可以用的


QQ截图20121109210908.png

EXE文件:http://good.gd/2291915.htm

源码:

import win.ui;
/*DSG{{*/
mainForm = ..win.form( bottom=487;parent=...;right=891;text=
"Nginx日志分析工具 Power by aardio";maxmize=1 )
mainForm.add(
button2={ dl=1;bottom=37;text=
"筛选(包含指定词)";left=768;dt=1;top=13;z=4;right=881;cls="button" };
listview={ dr=1;dl=1;bgcolor=16777215;right=883;left=9;dt=1;db=1;cls=
"listview";bottom=478;top=60;z=1;gridLines=1;edge=1;fullRow=1 };
edit={ dl=1;bottom=35;right=510;left=12;dt=1;top=13;z=3;edge=1;cls=
"edit" };
button={ dl=1;bottom=36;text=
"选择日志文件";left=517;dt=1;top=12;z=2;right=608;cls="button" };
edit2={ dl=1;bottom=36;text=
"Baiduspider";left=630;dt=1;top=14;z=5;right=761;edge=1;cls="edit" }
)
/*}}*/

//插入列
var logList = mainForm.listview
logList.insertColumn(
"IP",150)
logList.insertColumn(
"Time",150)
logList.insertColumn(
"Method",100)
logList.insertColumn(
"Url",300)
logList.insertColumn(
"HTTP",50)
logList.insertColumn(
"Status",50)
logList.insertColumn(
"Length",50)
logList.insertColumn(
"User-Agent",600)



//线程方法, 参数[列表句柄,日志文件位置,包含词语]
function insertList(hwnd,logPath,keyword){
   
import win;
   
import win.ui.ctrl.listview;
   
   
var listview = win.ui.ctrl.listview()   
    listview.hwnd = hwnd;
    listview.clear()   
//清除原来列表
   
    thread.set(
"stop", false)
    io.print(hwnd,logPath,keyword)
   
var lineNum = 0
   
//遍历日志文件
    for line in io.lines(logPath) {
        
//中途重新查询的可能性,所以价格判断
        var stop = thread.get("stop")
        
if(stop){
            listview.clear()   
//清除原来列表
            break;
        }
        
//如果定义了包含词语,但是没有查找到这个词语,则跳过,不插入
        if(keyword && !string.find(line,keyword)){  
            
continue ;
        }
        
var lineTxt = string.trim(line,'\n')
        
var logTab = string.split(lineTxt," ")  //以空格,分割每行的字符串

        
//table.remove(logTab,1)
        //移出无用元素
        table.remove(logTab,2)
        table.remove(logTab,2)
        table.remove(logTab,3)
        table.remove(logTab,8)
        
//去掉时间前面的符号 [
        logTab[2] = string.trim(logTab[2],"'\[")
        
var user_agent = ""
        
//合并最后的user-agent
        for(i=8;table.count(logTab);1){
            user_agent += logTab[ i ]
        }
        logTab[8] = user_agent;
        
//插入到列表
        listview.addItem(logTab)
        lineNum++;  
//计算行数
        if(lineNum%50 == 0){    //每50行,更新一下总数,翻一下页
            listview.ensureVisible(lineNum) //反一下页,不然别人以为卡住了
            listview.setColumnText(1,"IP("++listview.count++")")    //设置总数
        }
        win.delay(1)
    }
    listview.setColumnText(1,
"IP("++listview.count++")")
}

//选择日志文件
mainForm.button.oncommand = function(id,event){
   
//mainForm.msgbox( mainForm.button.text );
    import fsys.dlg;
   
var path = fsys.dlg.open("*.*||","选择日志文件")
   
if(path){
        
//设置界面上的路径值
        mainForm.edit.text = path;
        thread.set(
"stop", true)    //先停止以前的线程
        //创建一个 insertList线程,用来遍历日志,插入到列表中
        thread.create(
            insertList,
            mainForm.listview.hwnd,
            path
        )
    }
}
//只显示包含词
mainForm.button2.oncommand = function(id,event){
   
if(mainForm.edit.text){
        thread.set(
"stop", true)    //先停止以前的线程
        //创建一个 insertList线程,用来遍历日志,插入到列表中
        thread.create(
            insertList,
            mainForm.listview.hwnd,
            mainForm.edit.text,     
//传入日志文件路径
            mainForm.edit2.text //传入包含词,上面那个没有参数
        )
    }
else{
        win.msgboxTest(
"必须先选择日志文件!","提示")
    }
}


import config;
mainForm.bindConfig( config.mainForm,{
    edit =
"text"; //绑定edit控件的text属性值到配置文件
    radiobutton = "checked";
    checkbox =
"checked";
    combobox =
"selIndex";
} );



mainForm.show()
win.loopMessage();

测试用的日志文件 test.zip (372 Bytes, 下载次数: 122)

评分

参与人数 3专家分 +400 银币 +410 收起 理由
雨花 + 10 神马都是浮云
qqmmcc + 100 + 100 感谢分享
Jacen.He + 300 + 300 很给力!

查看全部评分

回复

使用道具 举报

9

主题

204

帖子

1301

积分

四级会员

Rank: 6Rank: 6

积分
1301
发表于 2012-11-9 20:12:28 | 显示全部楼层

不错,

不错,
回复

使用道具 举报

53

主题

277

帖子

1733

积分

四级会员

Rank: 6Rank: 6

积分
1733
 楼主| 发表于 2012-11-9 21:05:15 | 显示全部楼层

可以配合下面这个使用 用aardio开发了一个Nginx服务器日志切割工具 [url=http://bbs.aardio.com/thread-8200

可以配合下面这个使用

用aardio开发了一个Nginx服务器日志切割工具
http://bbs.aardio.com/thread-8200-1-1.html
回复

使用道具 举报

39

主题

205

帖子

1351

积分

四级会员

Rank: 6Rank: 6

积分
1351
发表于 2012-11-9 21:21:05 | 显示全部楼层

[i=s] 本帖最后由 wudijushi 于 2012-11-9 21:22 编辑 [/i] 虽然目前用不着该功能,但界面看起来比较舒适,是htmlayou

本帖最后由 wudijushi 于 2012-11-9 21:22 编辑

虽然目前用不着该功能,但界面看起来比较舒适,是htmlayout搞的?得看看源码
回复

使用道具 举报

53

主题

277

帖子

1733

积分

四级会员

Rank: 6Rank: 6

积分
1733
 楼主| 发表于 2012-11-9 21:28:35 | 显示全部楼层

[quote][size=2][color=#999999]wudijushi 发表于 2012-11-9 21:21[/color] [url=forum.p

wudijushi 发表于 2012-11-9 21:21
虽然目前用不着该功能,但界面看起来比较舒适,是htmlayout搞的?得看看源码

就套了个sharpskin皮肤而已...
回复

使用道具 举报

52

主题

1340

帖子

7326

积分

荣誉会员

Rank: 8Rank: 8

积分
7326
发表于 2012-11-9 21:37:35 | 显示全部楼层

谢谢分享~

谢谢分享~
回复

使用道具 举报

1

主题

21

帖子

215

积分

二级会员

Rank: 3Rank: 3

积分
215
发表于 2012-11-10 08:21:47 | 显示全部楼层

不错啊 支持下~

不错啊  支持下~
回复

使用道具 举报

7

主题

305

帖子

1912

积分

新手入门

积分
1912
QQ
发表于 2012-11-10 08:37:37 | 显示全部楼层

谢谢分享!

谢谢分享!
回复

使用道具 举报

8

主题

98

帖子

716

积分

三级会员

Rank: 4

积分
716
发表于 2012-11-10 10:43:09 | 显示全部楼层

看看,感觉是很不错

看看,感觉是很不错
回复

使用道具 举报

0

主题

3

帖子

81

积分

一级会员

Rank: 2

积分
81
发表于 2012-11-10 10:53:41 | 显示全部楼层

不错,{:3_59:}

不错,
回复

使用道具 举报

24

主题

61

帖子

438

积分

二级会员

Rank: 3Rank: 3

积分
438
发表于 2012-11-10 18:06:52 | 显示全部楼层

给力~

给力~
回复

使用道具 举报

12

主题

679

帖子

3996

积分

荣誉会员

子非魚、安知魚之樂

Rank: 8Rank: 8

积分
3996
发表于 2012-11-10 19:24:49 | 显示全部楼层

{:victory:}感谢分享

感谢分享
回复

使用道具 举报

6

主题

37

帖子

339

积分

二级会员

Rank: 3Rank: 3

积分
339
发表于 2012-11-10 20:28:14 | 显示全部楼层

学习下!

学习下!
回复

使用道具 举报

0

主题

12

帖子

193

积分

一级会员

Rank: 2

积分
193
发表于 2012-11-10 22:11:13 | 显示全部楼层

java log能解析不

java log能解析不
回复

使用道具 举报

0

主题

4

帖子

95

积分

一级会员

Rank: 2

积分
95
发表于 2012-11-12 10:12:38 | 显示全部楼层

看下 很给力~~

看下 很给力~~
回复

使用道具 举报

0

主题

5

帖子

41

积分

新手入门

Rank: 1

积分
41
发表于 2012-11-13 08:55:46 | 显示全部楼层

下载看看 、。。

下载看看 、。。
回复

使用道具 举报

3

主题

9

帖子

67

积分

一级会员

Rank: 2

积分
67
发表于 2012-11-14 15:22:36 | 显示全部楼层

支持楼主l希望楼主多发精品好帖.....

支持楼主l希望楼主多发精品好帖.....
回复

使用道具 举报

25

主题

116

帖子

732

积分

三级会员

Rank: 4

积分
732
发表于 2012-11-14 15:48:53 | 显示全部楼层

{:)}

回复

使用道具 举报

0

主题

3

帖子

27

积分

新手入门

Rank: 1

积分
27
发表于 2012-12-2 16:22:25 | 显示全部楼层

不错,谢谢楼主分享

不错,谢谢楼主分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-8-15 10:47 , Processed in 0.093751 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表