对天易行上网行为管理软件日志的一点更改

那天有空的时候在公司的一台闲服务器上做了个网桥,装上了天易行上网行为管理软件,说实话记录的日志很详细,但日志的分析功能有些不足,日志数据库用的是sqlite3,呵呵,以前没有用过这种数据库,上网查了些资料明白了是怎么回事,然后把数据库做了些修改,又做了个小程序对其日志进行分析,终于符合公司的要求了.

打开数据库后里面只有一个表mylogs,我先把这个表删除了,然后重新增加了一个表;drop table mylogs,先删除表,CREATE TABLE MyLogs(ID integer PRIMARY KEY, time datetime, ip int, mac varchar(100), content varchar(100), Domain varchar(100), LANip varchar(50));建了个同名的新表,只是多了两个字段,一个用于存内网IP,一个存网站的域名,好了,对sqlite3的处理就到此了,然后打开网管软件让它记日志吧;当需要对日志进行分析时先停止日志记录,然后用sqlite3.exe程序把数据导出成insert语句,放到sql server2000 数据库中进行处理(sqlite3字符串处理函数太少,无法分解日志),打开cmd转至sqlite3目录下,输入sqlite3.exe log.db, 设置模式为insert ,.mode insert mylogs,导出数据到文本文件.output a.txt;select * from mylogs;.output stdout;可以得到一个全是insert into语句的文本文件,在sql 2000数据库中新建一个刚才的表,然后执行导出的文件。我用的是下面的语句来分解日志内容的.

--用理包含有http://的网址信息///
update mylogs set 域名=( substring(内容,charindex('http://',内容),charindex('/',内容,charindex('http://',内容)+7)-charindex('http://',内容))),
       IP=(substring(内容,charindex('<',内容)+1,charindex('>',内容)-2))
where ip is null and 内容 like '%http://%'


--///处理属于非网址类的信息///

update mylogs set 域名=( substring(内容,charindex('使用/访问',内容)+6,len(内容)-charindex('使用/访问',内容)+5)),
       IP=(substring(内容,charindex('<',内容)+1,charindex('>',内容)-2))
where ip is null and 内容 not like '%http://%'

处理完成后就可以根据自己的爱好进行统计了,我的代码如下,希望对大家有一些参考/

                        <asp:ListItem Value="X1">网站访问排行</asp:ListItem>
                        <asp:ListItem Value="X2">用户访问排行</asp:ListItem>
                        <asp:ListItem Value="X3">单网址访问排行</asp:ListItem>
                        <asp:ListItem Value="X4">网络访问频繁用户</asp:ListItem>
                        <asp:ListItem Value="X6">单用户网络访问查看</asp:ListItem>
                        <asp:ListItem Value="X5">单网址与单用户查看</asp:ListItem>

 

 

 Public Function GetUrl(ByVal str As String) As String
        Dim s1 As String
        Dim x1, x2 As Integer
        x1 = str.Length
        x2 = Strings.InStr(str, "http://")
        s1 = Strings.Right(str, x1 - x2 + 1)
        Return s1
    End Function
    Protected Sub btn_cx_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        '根据不同的条件查询不同的内容
        l_q.visible = False
        L_Q.ToolTip = ""
        Dim lr As String = Trim(ddL_lr.SelectedValue)
        Dim sql As String
        If IsDate(txt_rq.Text) = False Then
            L_ts.Text = Now & "请先输入日期后再进行查询!"
            L_Q.ToolTip = L_ts.Text
            l_q.visible = True
            Exit Sub
        End If
        Dim sj As Date = CDate(txt_rq.Text)
        Dim tj As String = " 时间 between '" & sj & " 00:00:00' and '" & sj & " 23:59:59' "
        Select Case lr
            Case "X1"
                sql = "select top 100 count(域名) as 次数,域名 as 网址 from mylogs where " & tj & "group by 域名 order by 次数 desc "
                DG_show.DataSource = rq.GetData(sql)
                DG_show.DataBind()
                L_ts.Text = "目前列出的是访问次数最多的一百个网址!"
             
            Case "X2"
                sql = "select top 100 count(域名) as 次数,域名 as 网址,ip from mylogs where " & tj & "group by 域名,ip  order by 次数 desc,网址 "
                DG_show.DataSource = rq.GetData(sql)
                DG_show.DataBind()
                L_ts.Text = "目前列出的是各个电脑访问网址的前一百名!"
             
            Case "X3"
                If txt_url.Text = "" Then
                    L_ts.Text = "请输入网址后再进行查询!"
                    L_Q.ToolTip = L_ts.Text
                    l_q.visible = True
                    Exit Sub
                End If
                sql = " select top 100 count(域名) as 次数,域名,ip from mylogs where 域名 like  '%" & txt_url.Text & "%' and " & tj & " group by 域名,ip order by 次数 desc"
                DG_show.DataSource = rq.GetData(sql)
                DG_show.DataBind()
                L_ts.Text = "目前列出的是单个网址的访问排行情况!"
              
            Case "X4"
                sql = "select top 10 count(IP) as 次数,ip as IP地址 from mylogs where " & tj & "group by IP order by 次数 desc"
                DG_show.DataSource = rq.GetData(sql)
                DG_show.DataBind()
                L_ts.Text = "目前列出的是访问网络最频繁的10台电脑!"
            Case "X5"
                If txt_url.Text = "" Then
                    L_ts.Text = "请输入网址后再进行查询!"
                    L_Q.ToolTip = L_ts.Text
                    L_Q.Visible = True
                    Exit Sub
                End If
                If txt_ip.Text = "" Then
                    L_ts.Text = "请输入IP后再进行查询"
                    L_Q.ToolTip = L_ts.Text
                    L_Q.Visible = True
                    Exit Sub
                End If
                sql = "select top 100 内容 from mylogs where 内容 like '%" & txt_url.Text & "%' and 内容 like '%" & txt_ip.Text & "%' and " & tj
                DG_show.DataSource = rq.GetData(sql)
                DG_show.DataBind()
                '提取网址出来.
                Dim url As String
                Dim i As Integer
                For i = 0 To DG_show.Rows.Count - 1
                    url = DG_show.Rows(i).Cells(0).Text
                    ' m = r.Match(url)
                    ' url = m.Value.ToString
                    DG_show.Rows(i).Cells(0).Text = GetUrl(url)
                Next
                L_ts.Text = "查询的是IP与网址相符合的记录,复制后可查看信息,共有" & DG_show.Rows.Count & "条信息!"
            Case "X6"
                If txt_ip.Text = "" Then
                    L_ts.Text = "请输入IP后再进行查询"
                    L_Q.ToolTip = L_ts.Text
                    L_Q.Visible = True
                    Exit Sub
                End If
                sql = "select  count(域名) as 次数,域名 from mylogs where " & tj & " and IP='" & txt_ip.Text & "' group by 域名 order by 次数 desc "
                DG_show.DataSource = rq.GetData(sql)
                DG_show.DataBind()
                L_ts.Text = Now & " 本次查询共有" & DG_show.Rows.Count & "条数据!"
        End Select
    End Sub

 补充一下,发现修改了表结构后天易行网管无法保存数据了,所以大家不用改数据库了,只接改sql导出语句就行了,如下:select id,time,ip,mac,content,'' as domain,'' as lanip from mylogs,如果不需要登录之类的信息可以在导出前先删除ip=0的记录.不知为什么,不会上传图片了,所以大家就看不到图了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值