Sign in Join
Wiki copytemporary

LazLogger/ru: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: LazLogger/ru

OldNewLine
1+## Обзор
2+
3+Модуль **LazLogger** поставляется с Lazarus и обеспечивает ведение журнала в файл.
4+
5+## Использование
6+
7+### Добавление поддержки логирования в ваш исходный код
8+
9+Просто подключив модуль **lazlogger**, вы сможете использовать следующее:
10+
11+- **DebugLn:** который работает примерно так же, как WriteLn.
12+- **DebugLnEnter/DebugLnExit:** так же, как debugln, но с отступом увеличить/уменьшить.
13+- **DbgOut:** который работает примерно так же, как Write.
14+
15+Все они могут быть вызваны с помощью:
16+
17+- Одной строки или списка (до 15) строк: DebugLn('Foo'); DbgOut('a','b');
18+- Массива констант: DebugLn(\['Foo=', 1, ' Bar=', anInteger\]);
19+- Тех же аргументов, что и Format(). String + array of const: DbgOut('a %d',\[1\]);
20+
21+Также есть множество функций **dbgs**, которые преобразуют общие типы в строку. Например, dbgs(aRect) преобразует переменную типа TRect в строку.
22+
23+#### Активация/Деактивация LazLogger при помощи использования правильного модуля
24+
25+LazLogger предоставляет 3 модуля для использования в разделе "uses"
26+
27+LazLogger
28+Используйте этот модуль только в вашей основной программе. Использование этих модулей активирует функционирование LazLogger.
29+
30+LazLoggerBase
31+Используйте этот модуль, когда вы хотите использовать debugln. То, что делает LazLoggerBase, зависит от того, используется ли модуль LazLogger в каком-либо другом модуле вашего приложения. Если модуль LazLogger <u>не используется</u>, LazLoggerBase установит «логгер черной дыры», который отбросит все сообщения журнала. Если LazLogger <u>используется</u> где-либо, то все устройства, использующие LazLoggerBase, будут записывать сообщения журнала, как описано в разделе «Вывод логирования»
32+
33+LazLoggerDummy
34+Этот модуль предоставляет вам фиктивные вызовы debugln (и всех других функций LazLagger). Это просто вызовы пустых методов. Это позволяет отключить все журналы в модуле, без необходимости удалять любой оператор debugln.
35+
36+### Вывод логирования
37+
38+#### Stdout (Стандартный вывод)
39+
40+В нормальных условиях выходные данные записываются в `stdout`. Выходные данные не записываются, если `stdout` закрыт - например, когда приложение имеет вид {\$AppType Gui} или скомпилировано с -WG в Windows (см. Projct Options/Compiler options(Параметры компилятора) /Config and Target (Настройка и целевая платформа)/Target-specific options(Частные параметры цели)).
41+
42+#### Файл
43+
44+Вывод отладки также может быть записан в файл. Код инициализации модуля логирования
45+
46+- проверяет параметры командной строки вашей программы на **--debug-log=\<file\>** (в Lazarus: Run(Запуск) / Run Parameters(Параметры запуска) / Command line parameters(Параметры командной строки) - на вкладка "Локальные"). При нахождении этого параметра любые последующие выходные данные отладки отправляются в \<file\>.
47+
48+
49+Имя параметра можно изменить с помощью **DebugLogger.ParamForLogFileName:'--debug-log';** Это свойство существует, только если используется модуль LazLogger. (LazLoggerBase не определяет это свойство).
50+
51+- Если параметр командной строки '--debug-log' не задан, он затем проверяет, существует ли переменная среды операционной системы xxx_debuglog, где xxx - имя файла программы без расширения. Например, для Lazarus это будет lazarus_debuglog. Если такая переменная среды существует, она использует файл, указанный в этой переменной среды, в качестве файла для получения отладочной информации.
52+
53+Пример: если вы cделаете:
54+
55+```dos
56+set lazarus_debuglog=c:\lazarus\debug.txt
57+```
58+
59+и запустите Lazarus, вывод данных отладки будет записан в c:\lazarus\debug.txt.
60+
61+#### Сервер отладки
62+
63+Недоступно в LazLogger; см. [[DebugServer]].
64+
65+### Группы журналов
66+
67+Вы можете добавить группы журналов.
68+
69+``` pascal
70+var MY_LOG_GROUP: PLazLoggerLogGroup;
71+
72+initialization
73+ MY_LOG_GROUP := DebugLogger.FindOrRegisterLogGroup('fancy_name_for_mylog' {$IFDEF MY_LOG_GROUP_ON_BY_DEFAULT} , True {$ENDIF} );
74+```
75+
76+В вашем коде используйте
77+
78+``` pascal
79+debugln(MY_LOG_GROUP, 'log this text');
80+debugln(MY_LOG_GROUP, ['a=',a,' b=',b]); // a, b должны быть базовыми типами: integer, byte, ansistring. Смотрите типы, доступные для "array of const"
81+```
82+
83+и чтобы включить его, вызовите ваше приложение с
84+
85+```dos
86+--debug-enable=fancy_name_for_mylog
87+```
88+
89+--debug-enable= принимает список \[значений, разделенных\] запятой
90+
91+Уже активированную группу (DebugLogger.FindOrRegisterLogGroup('grpname', True)) можно отключить, указав имя группы со знаком минус.
92+
93+```dos
94+--debug-enable=-fancy_name_for_mylog
95+```
96+
97+Имя параметра может быть установлено через **DebugLogger.ParamForEnabledLogGroups='--debug-enable';**
98+
99+## Документация
100+
101+Для получения дополнительной информации см. сам модуль и документацию LCL.
102+
103+Используя LazLogger/LazLoggerBase, ваш код может получить доступ к экземпляру DebugLogger. Это предлагает некоторые свойства для точной настройки логирования.
104+
105+Вы также можете написать свой собственный класс логгера и использовать его с LazLogger/Base.
106+
107+## Многопоточность
108+
109+- **DebugLn** потокобезопасен, начиная с Lazarus 2.0.
110+
111+
112+В более ранних версиях этого текста было указано «начиная с 1.0», но было найдено и исправлено еще одно условие для 2.0.
113+
114+- Вызовы **DbgOut**, **DebugLnEnter**, **DebugLnExit** могут быть сделаны из потоков, но не всегда могут правильно форматировать/делать отступ в выходных данных.
115+
116+- Создание/настройка/уничтожение/конфигурирование логгера - это <b>НЕпотокобезопасные</b> операции и должны быть сделаны до запуска потоков.
117+
118+
119+Создание обычно выполняется автоматически во время инициализации устройства.
120+
121+Но любые свойства (например, ParamForLogFileName) должны быть установлены до доступа к логгеру из потоков.
122+
123+- Обратный вызов для таких событий, как OnDebugLn, производится в каждом потоке. Код в обратном вызове должен быть сам по себе потокобезопасным.
124+
125+
126+Изменение свойства является <b>НЕпотокобезопасным</b>
127+
128+## См.также
129+
130+- [[doc:fcl/eventlog/teventlog.html|TEventLog documentation]] Встроенная поддержка входа в FPC/Lazarus
131+- [[DebugServer]] Позволяет отправлять записи журнала наблюдателю через IPC
132+- [[MultiLog]]
133+- [[log4delphi]]
134+- Пакет IdeLazLogger, который добавляет в IDE диалог, позволяющий включать/отключать группы журналов, используемые в самой IDE.
135+
136+---
137+*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](/wiki-contact).*
138+Category: Debugging/ru
139+Category: LCL/ru
140+Category: Lazarus/ru
141+Category: Logging
142+Category: Russian

Back to history