7.2. Логирование в консоль браузера¶
Инструмент разработчика, транслирующий серверные логи пользовательской сессии в консоль DevTools браузера. Сообщения группируются в сворачиваемые блоки по операциям и SQL-запросам, поэтому ход выполнения читается как дерево, а не плоский поток.
7.2.1. Окно «Настройки логирования»¶
Окно открывается кнопкой настроек логирования в правой части главного меню приложения.
7.2.1.1. Компоновка¶
Каналы логирования расположены колонками. Каждая колонка содержит тумблер канала и выпадающий список уровня под ним. Канал «Скрипт» показывается только в Oracle решении: в PostgreSql решении он вывода не даёт, поэтому колонка не создаётся.
Канал |
Серверные логгеры |
Что логируется |
|---|---|---|
Операции |
|
Выполнение операций выборок: сворачиваемая группа на каждую операцию, длительность в закрывающем сообщении, ошибки выполнения. |
SQL |
|
Текст SQL-запросов с подставленными значениями параметров и временем выполнения, сгруппированный в пачки по выборкам и категориям. |
Скрипт |
|
Паскаль-скриптер (Oracle решение): на |
7.2.1.2. Поведение¶
Включение тумблера применяет к каналу уровень, выбранный в списке под ним; выключение переводит канал в
OFF.Список уровня доступен только при включённом тумблере; выбор уровня применяется сразу.
Набор уровней у каждого канала свой — уровни, не дающие полезного вывода, исключены: Операции —
TRACEиDEBUG, SQL —TRACE,DEBUGиINFO, Скрипт — все уровни. Что отображается на каждом уровне — в разделе «Уровни каналов».При открытии окно показывает фактические уровни каналов текущей сессии, поэтому состояние тумблеров переживает повторное открытие окна. Если уровень канала на сервере не входит в список (например, задан конфигурацией), канал полезного вывода не даёт: тумблер показан выключенным, а список — уровнем включения по умолчанию.
Уровни действуют в пределах сессии. Начальные значения задаются элементом
clientLogфайлаglobal3.config.xml(operationLevel,sqlLevel,scriptLevel), по умолчанию все каналы выключены.Переключение каналов на серверный лог не влияет: уровни, заданные конфигурацией logback, сохраняются, канал лишь добавляет к ним подробности, которых требует консоль браузера.
Note
При переподключении сессии (обрыв соединения) уровни каналов сбрасываются к значениям конфигурации.
7.2.1.3. Уровни каналов¶
По умолчанию все каналы выключены (OFF). Уровень, который тумблер ставит
при включении, — рабочий уровень канала: Операции — DEBUG, SQL — INFO,
Скрипт — TRACE. Если нет особой задачи, пользоваться стоит именно ими.
Канал |
Уровень |
Что отображается |
|---|---|---|
Операции |
|
Рабочий уровень: сворачиваемые группы «Выборка -> Операция» с длительностью выполнения и ошибками завершения. |
Операции |
|
Дополнительно к группам — служебные сообщения жизненного цикла операций
( |
SQL |
|
Рабочий уровень: текст запросов с подставленными параметрами и временем выполнения, сгруппированный в пачки. |
SQL |
|
Тот же состав, что |
Скрипт |
|
Рабочий уровень: вызовы встроенных функций скриптера с аргументами
( |
Скрипт |
|
Только редкие информационные сообщения ( |
Скрипт |
|
Режим «только проблемы»: предупреждения о нереализованных или
некорректно вызванных функциях среды выполнения ( |
Упавшие SQL-запросы логируются на ERROR независимо от уровня канала SQL:
они попадают в консоль при любом включённом уровне. У канала операций
собственных сообщений выше DEBUG нет, поэтому уровни INFO–ERROR
из его списка исключены — канал на них молчал бы.
Сообщения уровней TRACE и DEBUG выводятся через console.debug и по
умолчанию скрыты фильтром уровней DevTools — включите Verbose
(см. «Как ориентироваться в логе»).
7.2.2. Структура лога¶
Вложенность передаётся сворачиваемыми группами консоли, вид узла — цветным бейджем в начале заголовка:
Бейдж |
Значение |
|---|---|
|
Группа операции: «Выборка -> Операция». Закрывающее сообщение
|
|
Пачка SQL-запросов одной выборки. Открыта не более одной пачки: запросы той же выборки продолжают её, смена выборки закрывает текущую пачку и открывает следующую на том же уровне. |
|
Категория внутри пачки: запросы SQL-блоков операции; заголовок запроса содержит
имя блока, например |
|
Категория внутри пачки: запросы реестра настроек. |
|
Категория внутри пачки: остальные запросы движка (метаданные, служебные). |
Каждый запрос — вложенная свёрнутая группа: заголовок — однострочная сводка с временем
выполнения {executed in N msec}, внутри — полный текст запроса.
Пример структуры:
> [OPER] Gs3_QAApplication -> RANDOM400ROWSCOUNT
> [SQL] Gs3_QAApplication
> [META]
> SELECT ... {executed in 1 msec}
> [REG]
> select * from btk_registry where ... {executed in 1 msec}
> [OPER] Btk_User#List -> ONLOADMETA
Executed: Btk_User#List -> ONLOADMETA [27 ms]
Имена выборок в заголовках сокращены до последнего сегмента
(Btk_User#List вместо gtk-ru.bitec.app.btk.Btk_User#List);
полные имена сохраняются в серверных логах и SSH.
7.2.3. Ошибки¶
Ошибки не прячутся в свёрнутых группах: любое событие уровня ERROR сначала закрывает
все открытые группы и выводится в корень консоли красной строкой. Закрываются в том числе
группы родительских операций: если ошибка произошла во вложенной операции, закрывающие
сообщения Executed: … внешних операций выводятся уже в корень консоли, после ошибки —
это ожидаемое поведение, а не сбой вложенности.
Упавший SQL-запрос: красная строка
SQL [Блок] Выборка: текст ошибки СУБД, под ней свёрнутая группа с полным текстом запроса и стек-трейсом. Стек-трейс передаётся клиенту только приdevelopment.stackTraces.visibleInGui="true"вglobal3.config.xml; при выключенной настройке в группе остаётся текст запроса и текст ошибки без стека.Ошибка операции: красная строка
Error: Выборка -> Операция [N ms]: сообщение.
7.2.4. Как ориентироваться в логе¶
Сообщения уровней
TRACEиDEBUGвыводятся черезconsole.debug— в Chrome и Edge они скрыты фильтром уровней по умолчанию. Чтобы видеть их, включите уровень Verbose в фильтре консоли DevTools. Группы, запросы и ошибки видны при любом фильтре.Ход сценария читается по группам
OPER: разверните операцию, чтобы увидеть её SQL-пачки и вложенные операции; длительности в закрывающих сообщениях помогают найти медленный шаг.Поиск DevTools (Ctrl+F в консоли) работает по заголовкам групп: ищите по короткому имени выборки, имени операции или фрагменту SQL.
Смена уровня любого канала закрывает открытые группы — после переключения тумблеров дерево консоли не «съезжает».
Те же события уходят в SSH-лог сессии и серверные логи в плоском серверном формате (с полными именами и таймстампами) — консоль браузера их дублирует, а не заменяет.