Как создаются эти дополнительные файлы журнала ошибок? - PullRequest
0 голосов
/ 19 февраля 2009

У одного из наших клиентов в последнее время было много проблем с сетью. Когда я пошел, чтобы получить текстовый файл ошибок на их серверном компьютере, я обнаружил около дюжины файлов, один из которых был правильно назван файл

"errors.txt"

но у других были имена вроде

"ошибки ( имя_компьютераA v1) .txt"

"ошибки ( имя_компьютера v2) .txt"

"ошибки ( имя_компьютера v1) .txt" и т. д.

Наше программное обеспечение определенно не создает файлы с этими именами хотя это создание их контента.

Выключенная сеть, очевидно, приведет к ошибкам во многих местах клиентского приложения. Частью обработки всех ошибок является регистрация их на сервере. Процедура, которая делает это, сначала пытается найти файл ошибки, и если она не может этого сделать, она пытается создать его. Некоторые из этих других файлов ошибок содержат много ошибок, предполагающих что локальная «тень» error.txt используется для последовательных ошибок, пока сеть не работала в течение несущественного периода времени? затем, как только сеть снова будет восстановлена, ее помещают на сервер и переименовывают, чтобы не конфликтовать с существующими именами файлов

Может кто-нибудь объяснить, что здесь происходит и какое программное обеспечение это делает?

1025 * редактировать *

В ответ на запрос соответствующего кода

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

Ответы [ 2 ]

1 голос
/ 19 февраля 2009

Это удар в темноте. Попробуйте заменить

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

с

Item1 = fs.BuildPath(strErrorFolder, "\Errors.txt")
Item2 = fs.BuildPath(App.Path,"Blank.txt")

Альтернативная форма отладки добавляет параметр конфигурации к программному обеспечению, который позволяет вам уникально идентифицировать каждую установку программного обеспечения. Включите его в имя файла ошибки. Таким образом, вы можете видеть, откуда поступает каждый файл ошибок.

1 голос
/ 19 февраля 2009

Запустить FileMon на машине и затем вызвать состояние ошибки. Проверьте журнал FileMon, чтобы увидеть, что создали файлы.

Как уже указывало divo, вам может понадобиться использовать ProcMon .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...