Ведение логов действий программы (модуль класса)

Для использования подобного кода записи логов необходимо скопировать (перетащив мышкой) модуль класса LogRecorder из прикреплённого файла в ваш файл.

Sub ПримерИспользованияКласса_LogRecorder()
    ' создаём новый экземпляр лог-рекордера
    Dim LR As LogRecorder: Set LR = New LogRecorder
    ' задаём имя файла для лога (указываем полный путь)
    LR.LogFileFullName = ThisWorkbook.Path & "\common.log"
    LR.OpenLog    ' открываем лог (очистка файла + запись стартовой строки)

    For i = 1 To 10
        ' здесь ваш код ...
        ' заносим запись в лог
        LR.AddRecord "Событие " & i, "Информация " & i, 1
        If i Mod 3 = 0 Then ' i делится на 3 без остатка
            ' добавляем запись, до и после неё вставляем строку-разделитель
            LR.AddRecord "Значение " & i & " делится на 3 без остатка", _
                         "дополнительная проверка", 2, LOG_SEPARATOR_BEFORE_AND_AFTER
        End If
    Next i
    LR.AddRecord "Цикл завершен", "Проверено 10 чисел", 1, LOG_SEPARATOR_AFTER
 
    LR.CloseLog  ' закрываем лог (очистка буфера + запись конечной строки)
    ' LR.Show ' запуск текстового файла с логом (для просмотра
End Sub

Можно при добавлении записей в лог указать уровень записей - чтобы выделять отдельные записи отступом слева, как на этом скриншоте: http://ExcelVBA.ru/pictures/20110829-cd9-96kb.jpg

Кроме того, можно задать максимальное значение буфера лога (запись непосредственно в файла происходит не при каждом выполнении команды AddRecord, а только при превышении размера буфера, принудительном сохранении лога опцией ForceSavingLog=TRUE, а также при сохранении лога командой SaveLog, и при закрытии лога методом CloseLog )
Размер буфера можно изменить, задав значение свойства maxLogSizeBeforeSave (количество символов, при котором лог-файл будет сохранён принудительно, по умолчанию = 5000)

Результатом работы этого кода будет создание файла с именем common.log в той же папке, где расположен файл Excel с макросом:

==================================================
2011-08-29 10:19:30 Starting Log Record...
2011-08-29 10:19:30 Событие 1 Информация 1
2011-08-29 10:19:30 Событие 2 Информация 2
2011-08-29 10:19:30 Событие 3 Информация 3
==================================================
2011-08-29 10:19:30 Значение 3 делится на 3 без остатка дополнительная проверка
==================================================
2011-08-29 10:19:30 Событие 4 Информация 4
2011-08-29 10:19:30 Событие 5 Информация 5
2011-08-29 10:19:30 Событие 6 Информация 6
==================================================
2011-08-29 10:19:30 Значение 6 делится на 3 без остатка дополнительная проверка
==================================================
2011-08-29 10:19:30 Событие 7 Информация 7
2011-08-29 10:19:30 Событие 8 Информация 8
2011-08-29 10:19:30 Событие 9 Информация 9
==================================================
2011-08-29 10:19:30 Значение 9 делится на 3 без остатка дополнительная проверка
==================================================
2011-08-29 10:19:30 Событие 10 Информация 10
2011-08-29 10:19:30 Цикл завершен Проверено 10 чисел
==================================================
2011-08-29 10:19:30 Finishing Log Record...
==================================================

Для создания сразу нескольких логов удобно использовать дополнительный модуль класса LogRecorders (также присутствует в прикреплённом файле)

ВложениеРазмерЗагрузкиПоследняя загрузка
LOG_class.xls55 КБ3541 неделя 17 часов назад

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Всё нормально с файлом (только что проверил)
Убедитесь, что антивирус не повреждает его после скачивания

Файл поврежден... Перезалейте пожалуйста

Приветствую. Спасибо за всё хорошее.
Полагаю, чтобы использовать LogRecorder standalone от модуля LogRecorders, стоит скопировать из второго в первый:

Public Enum LOG_TYPE ' типы лог-файлов
LOG_CURRENT = 0
LOG_DEFAULT = 1
LOG_ENCRYPTED = 2
LOG_SPECIAL = 4
LOG_ERRORS = 8

LOG_MAIL = 9
End Enum

иначе выдаёт: Compile error: User-defined type not defined

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
  ____    _  __  ____           _     ___ 
|___ \ | |/ / | _ \ ___ | |_ |_ _|
__) | | ' / | |_) | / __| | __| | |
/ __/ | . \ | _ < | (__ | |_ | |
|_____| |_|\_\ |_| \_\ \___| \__| |___|
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

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