Очень полезно, чтобы программа вела лог-файлы
своей работы. Особенно записывала туда время и на
каком этапе произошел сбой. В дальнейшем это
существенно облегчает поиск и исправление
ошибки. Вдобавок если вы программу делали на
заказ, то цена такого протокола работы резко
возрастает. Все что нам нужно для работы - это
ввести одну-две переменных и добавить одну ма-а-ахонькую
процедурку. Итак, поехали:Для начала объявим
переменную
Private Logging As Boolean
Она будет служить нам для разрешения/запрета
ведения подробного протокола работы. Это
необходимо, чтобы без нужды не писать в файл
большое количество информации. Только время
запуска/завершения и код и описание ошибки, если
таковая была. Пример будем брать из проекта Почтовый робот
Добавим в программу возможность запуска с
ключом /l для ведения подробных логов. это придаст
гибкость программе.
'Если программа была запущена с ключем /l, то
записываем
'все действия программы в логи, иначе -
записываются только
'контрольные точки и сообщения об ошибках
'If Command$ = "/l" Then Logging = True Else Logging = False
If InStr(1, Command$, "/l") > 0 Then Logging = True Else Logging = False
Ну, а теперь осталось только добавить саму
процедуру записи действия:
Private Sub Log(Promt As String)
'Процедура, которая ведет логи в зависимости от
ключа в
'коммандной строке
'Если переменная установлена в False (запуск без
ключа /l), то пропускаем эту 'процедуру
If Logging = False Then Exit Sub
Dim FileNum As Integer
FileNum = FreeFile
Open App.Path & "\checker.log" For Append As FileNum
Write #FileNum, " " & Promt
Close #FileNum
End Sub
Вот и все. Теперь используем ее везде, где хоть
что-то делается.
Log Now & "Получение почты" & vbCrLf
Однако для наиболее ответственных точек
сделаем отдельную процедуру записи состояния
программы в этих точках LogGeneral.
Private Sub LogGeneral(Promt As String)
'Процедура, которая ведет логи.
Dim FileNumb As Integer
FileNumb = FreeFile
Open App.Path & "\checker.log" For Append As FileNumb
Write #FileNumb, " " & Promt
Close #FileNumb
End Sub