Как избежать конфликта доступа к лог-файлу в VBA? - PullRequest
0 голосов
/ 09 марта 2020

У меня есть программа, которая в настоящее время используется на двух компьютерах и регистрирует большое количество сообщений отладки во время ее продуктивного использования. Каждый компьютер / рабочее место работает с копией файла, и в конце дня эти копии синхронизируются. Не самое чистое решение, которое только можно себе представить, но пока оно подойдет. Теперь программа должна быть развернута на большее число (5-20) компьютеров.

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

Public Sub ApplyMonitoring(strMessage As String)
'Write strMessage to logfile

Dim strPath As String
strPath = ThisWorkbook.Path & Application.PathSeparator & "debug.log"

On Error GoTo 1
Open strPath For Append As #1
Print #1, Date & ", " & Time & ", " & ThisWorkbook.Name & ", " & (Environ$("Username")) & ", " & strMessage
Close #1
On Error GoTo 0

Exit Sub

1:
'On Error wait for 1-5 seconds and try again
Application.Wait (Time + TimeSerial(0, 0, Int((5 * Rnd) + 1)))
Open strPath For Append As #1
Print #1, Date & ", " & Time & ", " & ThisWorkbook.Name & ", " & (Environ$("Username")) & ", " & strMessage & " (delayed)."
Close #1

End Sub
  • Видите ли вы лучший способ добиться отсутствия столкновений? мониторинг?
  • Какой простой способ проверить это?

Большое спасибо за вашу помощь и советы!

...