Копия викизеркало

Это зеркало вики с pascal.chat. Правка, история и вход — там.

LazLogger/ru

English · Русский

Обзор

Модуль LazLogger поставляется с Lazarus и обеспечивает ведение журнала в файл.

Использование

Добавление поддержки логирования в ваш исходный код

Просто подключив модуль lazlogger, вы сможете использовать следующее:

Все они могут быть вызваны с помощью:

Также есть множество функций dbgs, которые преобразуют общие типы в строку. Например, dbgs(aRect) преобразует переменную типа TRect в строку.

Активация/Деактивация LazLogger при помощи использования правильного модуля

LazLogger предоставляет 3 модуля для использования в разделе "uses"

LazLogger
Используйте этот модуль только в вашей основной программе. Использование этих модулей активирует функционирование LazLogger.

LazLoggerBase
Используйте этот модуль, когда вы хотите использовать debugln. То, что делает LazLoggerBase, зависит от того, используется ли модуль LazLogger в каком-либо другом модуле вашего приложения. Если модуль LazLogger не используется, LazLoggerBase установит «логгер черной дыры», который отбросит все сообщения журнала. Если LazLogger используется где-либо, то все устройства, использующие LazLoggerBase, будут записывать сообщения журнала, как описано в разделе «Вывод логирования»

LazLoggerDummy
Этот модуль предоставляет вам фиктивные вызовы debugln (и всех других функций LazLagger). Это просто вызовы пустых методов. Это позволяет отключить все журналы в модуле, без необходимости удалять любой оператор debugln.

Вывод логирования

Stdout (Стандартный вывод)

В нормальных условиях выходные данные записываются в stdout. Выходные данные не записываются, если stdout закрыт - например, когда приложение имеет вид {$AppType Gui} или скомпилировано с -WG в Windows (см. Projct Options/Compiler options(Параметры компилятора) /Config and Target (Настройка и целевая платформа)/Target-specific options(Частные параметры цели)).

Файл

Вывод отладки также может быть записан в файл. Код инициализации модуля логирования

Имя параметра можно изменить с помощью DebugLogger.ParamForLogFileName:'--debug-log'; Это свойство существует, только если используется модуль LazLogger. (LazLoggerBase не определяет это свойство).

Пример: если вы cделаете:

dos
set lazarus_debuglog=c:\lazarus\debug.txt

и запустите Lazarus, вывод данных отладки будет записан в c:\lazarus\debug.txt.

Сервер отладки

Недоступно в LazLogger; см. DebugServer.

Группы журналов

Вы можете добавить группы журналов.

pascal
var MY_LOG_GROUP: PLazLoggerLogGroup; 

initialization
  MY_LOG_GROUP := DebugLogger.FindOrRegisterLogGroup('fancy_name_for_mylog' {$IFDEF MY_LOG_GROUP_ON_BY_DEFAULT} , True {$ENDIF} );

В вашем коде используйте

pascal
debugln(MY_LOG_GROUP, 'log this text');
debugln(MY_LOG_GROUP, ['a=',a,' b=',b]); // a, b должны быть базовыми типами: integer, byte, ansistring. Смотрите типы, доступные для "array of const"

и чтобы включить его, вызовите ваше приложение с

dos
--debug-enable=fancy_name_for_mylog

--debug-enable= принимает список [значений, разделенных] запятой

Уже активированную группу (DebugLogger.FindOrRegisterLogGroup('grpname', True)) можно отключить, указав имя группы со знаком минус.

dos
--debug-enable=-fancy_name_for_mylog

Имя параметра может быть установлено через DebugLogger.ParamForEnabledLogGroups='--debug-enable';

Документация

Для получения дополнительной информации см. сам модуль и документацию LCL.

Используя LazLogger/LazLoggerBase, ваш код может получить доступ к экземпляру DebugLogger. Это предлагает некоторые свойства для точной настройки логирования.

Вы также можете написать свой собственный класс логгера и использовать его с LazLogger/Base.

Многопоточность

В более ранних версиях этого текста было указано «начиная с 1.0», но было найдено и исправлено еще одно условие для 2.0.

Создание обычно выполняется автоматически во время инициализации устройства.

Но любые свойства (например, ParamForLogFileName) должны быть установлены до доступа к логгеру из потоков.

Изменение свойства является НЕпотокобезопасным

См.также


From the Free Pascal wiki, page "LazLogger/ru", as it stood on 2024-04-14 after a change by N7800, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Версия 2, последнее изменение: WikiArchive, .