Технологический журнал (ТЖ) — это штатный низкоуровневый инструмент платформы «1С:Предприятие», позволяющий фиксировать системные события, ошибки, аварийные падения рабочих процессов, блокировки и длительные запросы к СУБД. Разберем по шагам, как корректно создать конфигурационный файл, какие события отслеживать и как избежать типовых ошибок при сборе логов.
Для включения технологического журнала на сервере или рабочей станции создадим файл logcfg.xml в системном каталоге настроек платформы. По умолчанию на 64-разрядной операционной системе Windows конфигурационный каталог расположен по пути C:\Program Files\1cv8\conf\ (или C:\Program Files (x86)\1cv8\conf\ для 32-разрядных процессов).
Важно: синтаксис XML строго проверяется платформой. Любой лишний символ (например, лишняя точка с запятой внутри кавычек или тегов), неверный регистр тегов или нарушение схемы XML приведут к тому, что платформа проигнорирует настройки, и файлы логов не будут создаваться.
Рассмотрим пример базовой конфигурации для сбора критических ошибок и аварийных завершений процессов:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<dump location="C:\v8logs\dumps" create="1" type="3"/>
<log location="C:\v8logs\logs" history="24">
<event>
<eq property="Name" value="EXCP"/>
</event>
<event>
<eq property="Name" value="PROC"/>
</event>
<event>
<eq property="Name" value="SRVC"/>
</event>
<event>
<eq property="Name" value="CONN"/>
</event>
<property name="all"/>
</log>
</config>
Проанализируем ключевые атрибуты конфигурации:
3 формирует компактный мини-дамп, что экономит место на диске).Если после размещения файла logcfg.xml папки с логами не создаются или формируются пустыми, выясним причину с правами доступа. Серверные процессы ragent, rmngr и rphost выполняются от имени специальной системной учетной записи службы (по умолчанию USR1CV8).
Настроим права по следующей схеме:
C:\v8logs).USR1CV8).После сохранения файла конфигурации и установки прав платформа применяет настройки технологического журнала «на лету» в течение 1 минуты без необходимости перезапуска службы 1С.
Для тонкой настройки логирования разберем основные события, поддерживаемые платформой:
EXCP — исключительные ситуации и нештатные ошибки в коде или серверных процессах.EXCPCNTX — контекст исполнения в момент возникновения нештатной ситуации (позволяет получить стек вызовов процедур и функций).PROC — события жизненного цикла процессов кластера (старт, плановая остановка, аварийное завершение).CONN — установка и разрыв сетевых TCP-соединений между клиентскими и серверными компонентами.CALL / SCALL — входящие и исходящие удаленные вызовы между клиентом и сервером.TLOCK, TTIMEOUT, TDEADLOCK — события управляемых блокировок, превышения времени ожидания и обнаружения взаимоблокировок.MEM / LEAKS — мониторинг выделения оперативной памяти процессами кластера и фиксация потенциальных утечек памяти.DBMSSQL — запросы к СУБД MS SQL Server.Сбор всех событий подряд с параметром property name="all" создает экстремальную нагрузку на дисковую подсистему и может только усилить «зависания» базы. Чтобы выявить реальные причины медленной работы, применим фильтрацию по длительности (Duration). Единица измерения длительности в технологическом журнале — микросекунды (1 секунда = 1 000 000 микросекунд).
Посмотрим на пример конфигурации для отслеживания вызовов и запросов к базе, длящихся дольше 5 секунд:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\v8logs\slow_calls" history="12">
<event>
<eq property="Name" value="CALL"/>
<ge property="Duration" value="5000000"/>
</event>
<event>
<eq property="Name" value="DBMSSQL"/>
<ge property="Duration" value="5000000"/>
</event>
<event>
<eq property="Name" value="EXCP"/>
</event>
<property name="Context"/>
<property name="Descr"/>
<property name="Sql"/>
<property name="p:processName"/>
</log>
</config>
Включение свойства Context критически важно: именно оно записывает в лог точный путь по коду конфигурации 1С (модуль и номер строки), на котором произошла задержка или сбой.
Разберем типовую ошибку сетевого взаимодействия, которая часто появляется в ТЖ:
EXCP,1,process=ragent,ClientID=5286,Exception=NetDataExchangeException,Descr='server_addr=tcp://server:1541 descr=10054(0x00002746): Удаленный хост принудительно разорвал существующее подключение'
Проанализируем возможные причины ошибки 10054:
rphost: Если рабочий процесс падает из-за нехватки оперативной памяти или ошибки Access Violation, сетевой сокет моментально закрывается, и менеджер кластера фиксирует принудительный разрыв со стороны удаленного хоста.ragent, rmngr и rphost.Если ручное редактирование XML вызывает сложности, используем готовые инструменты от фирмы 1С и сообщества:
logcfg.xml с нужными фильтрами.