При возникновении проблем с производительностью, аварийных завершений процессов или ошибок блокировок разработчики и администраторы сталкиваются с необходимостью собрать диагностические данные. В платформе «1С:Предприятие» для этого предусмотрен специальный низкоуровневый инструмент — технологический журнал (ТЖ). Разберем по шагам, как правильно активировать сбор логов, настроить фильтрацию событий под конкретного пользователя и избежать распространенных ошибок.
В процессе обсуждения часто возникает путаница между двумя совершенно разными механизмами платформы: технологическим журналом (ТЖ) и журналом регистрации (ЖР). Выясним принципиальную разницу между ними:
ВыгрузитьЖурналРегистрации().Если ваша задача состоит в получении прикладных событий из стандартного журнала регистрации программным путем, то для этого используется следующий типовой код:
Колонки = "Дата,ИмяПользователя,ПредставлениеСобытия,ПредставлениеДанных,Комментарий";
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Дата");
ТЗ.Колонки.Добавить("ИмяПользователя");
ТЗ.Колонки.Добавить("ПредставлениеСобытия");
ТЗ.Колонки.Добавить("ПредставлениеДанных");
ТЗ.Колонки.Добавить("Комментарий");
Отбор = Новый Структура;
Отбор.Вставить("ДатаНачала", НачалоДня(ТекущаяДата()));
Отбор.Вставить("Пользователь", "ИвановИИ");
ВыгрузитьЖурналРегистрации(ТЗ, Отбор, Колонки, , 100);
Для Каждого Стр Из ТЗ Цикл
Сообщить(Стр.Дата + ", " + Стр.ИмяПользователя + ", " + Стр.ПредставлениеСобытия);
КонецЦикла;
Однако если требуется расследовать системные сбои, взаимоблокировки или зависания вызовов, перейдем к настройке полноценного технологического журнала.
Поскольку ТЖ отключен по умолчанию, для его активации требуется создать файл конфигурации с именем logcfg.xml. Платформа опрашивает наличие и изменение этого файла с интервалом около одной минуты, поэтому перезапуск служб кластера серверов или клиентских приложений не требуется.
Рассмотрим, где должен располагаться файл logcfg.xml:
C:\Program Files\1cv8\conf (или в каталоге конкретной версии платформы, например C:\Program Files\1cv8\8.3.24.1667\conf). При одновременном наличии файлов приоритет имеет файл в каталоге конкретной версии./opt/1cv8/conf либо в каталоге версии /opt/1cv8/x86_64/8.3.24.1667/conf.Важное требование безопасности: учетная запись операционной системы, от имени которой запущена служба сервера «1С:Предприятия» (например, usr1cv8), должна обладать полными правами на чтение файла logcfg.xml, а также правами на запись и создание подкаталогов в целевой папке, куда будут сохраняться логи.
Проанализируем типовую конфигурацию. Предположим, нам необходимо отследить все исключительные ситуации (событие EXCP) и длительные серверные вызовы (событие CALL), выполненные конкретным пользователем информационной базы. Для этого создадим файл logcfg.xml в кодировке UTF-8 со следующим содержимым:
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\1C_Logs\UserAnalysis" history="24">
<event>
<eq property="name" value="EXCP"/>
<eq property="Usr" value="Иванов Иван Иванович"/>
</event>
<event>
<eq property="name" value="CALL"/>
<eq property="Usr" value="Иванов Иван Иванович"/>
<ge property="duration" value="5000000"/>
</event>
<property name="all"/>
</log>
</config>
Разберем подробнее ключевые параметры этой настройки:
location — директория, в которую платформа будет записывать логи. Платформа создаст внутри отдельные папки под каждый процесс (rphost, rmngr, ragent) и будет складывать туда текстовые файлы с именами вида ГГММДДЧЧ.log.history — глубина хранения файлов в часах. По истечении указанного срока (в примере — 24 часа) старые файлы автоматически удаляются.Usr — системное свойство технологического журнала, хранящее имя пользователя информационной базы. Для точного совпадения используется оператор <eq>, а для нестрогого поиска по маске можно применить <like property="Usr" value="%Иванов%"/>.duration — длительность выполнения операции. Обратите внимание: время в ТЖ всегда задается в микросекундах (1 секунда = 1 000 000 мкс). В примере отбираются серверные вызовы длительностью более 5 секунд.property name="all" — указывает на необходимость выгрузки всех доступных свойств выбранных событий.Особенность свойства Usr: на начальном этапе установки соединения или авторизации имя пользователя еще не определено в контексте процесса. В таких случаях свойство Usr может оставаться пустым. Для сквозного анализа сеанса обратите внимание на сопутствующие свойства: SessionID (номер сеанса) и t:clientID (идентификатор клиента).
Запись технологического журнала создает существенную нагрузку на дисковую подсистему сервера. Чтобы сбор логов не привел к падению производительности или остановке рабочих баз, соблюдайте следующие правила:
<event><like property="name" value=".*"/></event> за считанные минуты способна заполнить сотни гигабайт дискового пространства и парализовать работу сервера.location, на отдельном физическом накопителе, вдали от каталогов баз данных СУБД, журналов транзакций и каталога srvinfo.DBMSSQL, DBPOSTGRS) и блокировок (TLOCK) всегда устанавливайте минимальный порог duration.logcfg.xml или очистите его содержимое до пустого тега <config xmlns="http://v8.1c.ru/v8/tech-log"/>. Через минуту сбор данных автоматически прекратится без перезагрузки системы.Файлы ТЖ представляют собой обычный текст в кодировке UTF-8, разбитый по каталогам процессов. Чтение больших объемов таких файлов стандартным «Блокнотом» неэффективно. Рассмотрим основные инструменты для работы с полученным журналом:
В среде Windows быстрый поиск по файлам журнала выполняется командлетом PowerShell:
Get-ChildItem -Path "C:\1C_Logs\UserAnalysis" -Recurse -Filter "*.log" |
Select-String -Pattern "Usr=Иванов.*EXCP"
В Linux аналогичный результат дает связка утилит grep и awk.