Vb6 这些额外的错误日志文件是如何创建的?

Vb6 这些额外的错误日志文件是如何创建的?,vb6,networking,Vb6,Networking,我们的一个客户最近遇到了很多网络问题。 当我在他们的服务器计算机上检索错误文本文件时,我发现了十几个文件,其中一个是正确命名的文件 “errors.txt” 但是其他人的名字像 “错误(computernameA v1).txt” “错误(computernameA v2).txt” “错误(computernameB v1).txt” 等等 我们的软件绝对不会创建具有这些名称的文件 尽管它正在创建它们的内容 网络关闭显然会在客户端应用程序的很多地方抛出错误。处理所有错误的一部分是将它们记录到服

我们的一个客户最近遇到了很多网络问题。 当我在他们的服务器计算机上检索错误文本文件时,我发现了十几个文件,其中一个是正确命名的文件

“errors.txt”

但是其他人的名字像

“错误(computernameA v1).txt”

“错误(computernameA v2).txt”

“错误(computernameB v1).txt” 等等

我们的软件绝对不会创建具有这些名称的文件 尽管它正在创建它们的内容

网络关闭显然会在客户端应用程序的很多地方抛出错误。处理所有错误的一部分是将它们记录到服务器计算机上。 执行此操作的例程首先尝试查找错误文件,如果找不到,则尝试创建错误文件。其中一些其他错误文件包含大量错误 当网络在一段不明显的时间内停机时,error.txt的本地“阴影”被用于连续错误?然后,一旦网络再次备份,就会将其放到服务器上并重命名,以避免与现有文件名冲突

有人能解释一下这里发生了什么,是什么软件在做这件事吗

编辑

响应有关代码的请求

170   On Error Resume Next
      Dim fs
180    Set fs = CreateObject("Scripting.FileSystemObject")
       Dim Item1 As String
       Dim Item2 As String
190    Item1 = strErrorFolder
200    If fs.FolderExists(strErrorFolder) <> True Then
210           MkDir Item1
220    End If

230    Item1 = strErrorFolder & "\Errors.txt"
240    If fs.FileExists(Item1) <> True Then
250    Item2 = App.Path & "Blank.txt"
260           FileCopy Item2, Item1
270           Item2 = ""
280           SetAttr Item1, vbNormal
290           Open Item1 For Output As #1
300           Write #1, "ErrorDateTime", "ErrorUser", "DatabaseAddress", "ProgramVersion", "Module", "SubRoutine", "LineNumber", "ErrorCode", "ErrorDescription"
310           Close #1
320    End If

330    Open Item1 For Append As #1
340           Write #1, ErrorDateTime, ErrorUser, Left(PANDATABASE, 1), ProgramVersion, Module, SubRoutine, LineNumber, ErrorCode, ErrorDescription
350           Close #1

360   On Error GoTo 0

End Sub 'errorhandled not
170出现错误,请继续下一步
暗fs
180 Set fs=CreateObject(“Scripting.FileSystemObject”)
将项目1设置为字符串
将项目2设置为字符串
190项目1=strErrorFolder
200如果fs.FolderExists(strErrorFolder)为True,则
210 MkDir项目1
220结束如果
230 Item1=strErrorFolder&“\Errors.txt”
240如果fs.FileExists(Item1)为True,则
250 Item2=App.Path&“Blank.txt”
260文件副本项目2,项目1
270项2=“”
280设置属性项1,vbNormal
290输出为#1的开放项1
300写入#1,“ErrorDateTime”,“ErrorUser”,“DatabaseAddress”,“ProgramVersion”,“Module”,“SubRoutine”,“LineNumber”,“ErrorCode”,“ErrorDescription”
310关闭#1
320如果结束
330追加为#1的打开项1
340写入#1,ErrorDateTime,ErrorUser,左(PANDATABASE,1),程序版本,模块,子例程,行号,错误代码,错误描述
350关闭#1
360 On错误转到0
未处理“结束子”错误
在机器上运行,然后导致错误情况。检查FileMon日志以查看是什么创建了这些文件


正如divo所指出的,您可能需要改用。

这是一种暗箭伤人的做法。试着替换

Item1 = strErrorFolder & "\Errors.txt"
Item2 = App.Path & "Blank.txt"


调试的另一种形式是向软件添加一个配置选项,该选项允许您对每次安装的软件进行唯一标识。将其合并到错误文件名中。这样,您就可以看到每个错误文件的来源。

我将在这里断章取义地说,如果没有代码,这几乎不可能跟踪到。您的应用程序是用什么语言编写的?它使用什么库?你如何100%确定它不是你的应用程序?vb6,该应用程序从不尝试将计算机名放入文件名中是什么让你如此确定?您能否共享日志文件的相关代码和内容来跟踪此问题?你是这个项目上唯一的开发者吗?你有没有问过客户,他那边的人是否会这样做?我可能会这样做,谢谢。我希望有一些自动的网络管理员行为来解释它。不再推荐使用FileMon(并且不再支持该工具)。最好使用它的后继者ProcMon.Ehh…这是真的,但只要它有效,我仍然使用FileMon。有足够的数据可以使用FileMon浏览,因此我可以避免过度使用ProcMon,除非我无法避免。但是,并非所有当前的Windows平台都支持FileMon,例如Win XP SP3或Win 2k8未列出。因此,FileMon显示的结果在这些平台上可能不再准确。我同意ProcMon的性能可能会更好…我敢打赌它是某种文件同步或备份程序。Filemon/Procmon将显示这一点,但您必须耐心等待。谢谢,特别是您关于在错误日志中添加额外信息的建议。我尽可能确定这些额外文件是由我的软件创建的。让我感到困惑的是,当网络再次启动时,它们是如何被带到服务器并重新命名的。用户在任何方面都不是技术人员。而且,当网络关闭时,创建文件的尝试应该会失败。这就像软件被愚弄,以为创建文件的尝试成功了一样。这可能是一种类似于使用重复名称粘贴重复文件的机制。Windows正在拦截创建调用并更改名称以防止覆盖。通过确保每个用户的错误日志都有唯一的游戏,您可以看到是否发生了这种情况。如果问题以唯一的名称消失,那么就是您的罪犯。
Item1 = fs.BuildPath(strErrorFolder, "\Errors.txt")
Item2 = fs.BuildPath(App.Path,"Blank.txt")