以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]日志表  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=135929)

--  作者:2474842866
--  发布时间:2019/6/6 10:40:00
--  [求助]日志表
现在要在软件中新加一个日志功能(点击打开日志表),可以看见所有登录,操作等日志记录。现在如何将生产的日志文件Logs实时同步到日志表呢?
若是上传到sql中也没有办法实时同步啊,请问这个功能如何实现?

--  作者:xndd
--  发布时间:2019/6/6 11:24:00
--  
 每次触发登陆、操作时,记录进入日志表
--  作者:有点甜
--  发布时间:2019/6/6 11:34:00
--  

方法一:logs是文本文件吧?你直接把本地的logs文件上传到服务器去(ftp),然后记录每一个客户端的logs文件路径。需要的时候,就打开logs查看内容。

 

方法二:读取logs文件,把内容导入到你的日志表里,参考

 

http://www.foxtable.com/webhelp/scr/2629.htm

 

方法三:不要用logs文件,直接把每个操作记录到表格里面


--  作者:2474842866
--  发布时间:2019/6/6 14:36:00
--  
对的,我用方法二,写入本地日志记录,但是写入第二行会报错,代码如下:
\'定义变量保存文本内容
Dim s As String = FileSys.ReadAllText("e:\\log.xls")
s=s.Replace(vblf," ")
Dim str() As String = s.Split(vbcr)
\'循环写入日志
For i As Integer = 0 To str.Length - 1
    Dim ss() As String = str(i).Split(vbtab)
    If True Then
        Dim dr As DataRow = DataTables("表A").AddNew()
        dr("第一列") = ss(i)
    End If
Next

图片点击可在新窗口打开查看此主题相关图片如下:360截图20190606143504299.jpg
图片点击可在新窗口打开查看


--  作者:有点色
--  发布时间:2019/6/6 14:52:00
--  

 

把你的log文件发上来测试。

 

 


--  作者:2474842866
--  发布时间:2019/6/6 15:25:00
--  
日志log文件
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:log.xls



--  作者:有点甜
--  发布时间:2019/6/6 15:36:00
--  
Dim s As String = FileSys.ReadAllText("d:\\log.xls")
s=s.Replace(chr(10),"")
Dim str() As String = s.Split(chr(13))
\'循环写入日志
For i As Integer = 0 To str.Length - 1
    Dim dr As DataRow = DataTables("表A").AddNew()
    dr("第一列") = str(i)
Next

--  作者:2474842866
--  发布时间:2019/6/6 17:28:00
--  
是这样的老师,这个合并问题解决了,但是在合并中,重复的数据不会覆盖掉,而是重新再写一遍,这样造成每次读取都从头重写一遍日志,有大量重复的

图片点击可在新窗口打开查看此主题相关图片如下:360截图20190606172631442.jpg
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2019/6/6 17:37:00
--  

加入代码判断是否重复,即可,如

 

Dim s As String = FileSys.ReadAllText("d:\\log.xls")
s=s.Replace(chr(10),"")
Dim str() As String = s.Split(chr(13))
\'循环写入日志
For i As Integer = 0 To str.Length - 1
    Dim dr As DataRow = DataTables("表A").find("某列=\'" & 某值 & "\' and 某列=\'" & 某值 & "\'")
    If dr Is Nothing Then dr = DataTables("表A").addnew

    dr("第一列") = str(i)
Next


--  作者:2474842866
--  发布时间:2019/6/9 10:17:00
--  
老师,我已经对代码修改了,但是加完判断之后我的日志表报错,超出索引界限,而且也没有筛选成功。
代码如下:
Dim s As String = FileSys.ReadAllText("e:\\log.txt")
s=s.Replace(vblf,"")
Dim str() As String = s.Split(vbcr)
\'循环写入日志
For i As Integer = 0 To str.Length - 2
    Dim ss() As String = str(i).Split(vbtab)
    Dim dr As DataRow = DataTables("日志表").find("时间 = \'" & ss(0) & "\' and 用户名 = \'" & ss(1) & "\' and 记录 = \'" & ss(2) & "\'")
    If  dr Is Nothing Then
        dr = DataTables("日志表").AddNew()
        If  ss.Length = 3 Then
            dr("时间") = ss(0)
            dr("用户名") = ss(1)
            dr("记录") = ss(2)
        End If
    End If
Next
日志文件:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:log.txt