Не так давно открыл для себя нечто новое, оказывается есть технологический журнал (ТЖ). Что это за зверь такой и для чего он нужен попытаюсь ответить в этой статье.
Как говорить сама 1С Технологический журнал системы 1С:Предприятие 8 может использоваться для анализа технологических проблем работы системы и анализа аварийных завершений. Он регистрирует информацию от всех приложений системы 1С:Предприятие 8, работающих на данном компьютере. Из этого определения сразу становится очевидность полезности этого инструмента, из него мы можем узнать например:
- при выполнении какого кода «падают» рабочие процессы сервера
- какие запросы работают медленно и откуда они вызываются
- Посмотреть были ли взаимоблокировки или блокировки по таймауту
- и многое другое.
Что же собой представляет ТЖ? А представляет собой ТЖ совокупность текстовых файлов, хранящихся в указанном каталоге.
Файлы эти можно разделить на 2 группы
- файлы дампа
- файлы логов
Логи – это файлы с расширением log, где информация хранится в текстовом виде.
Дампы – это файл с расширением mdmp, который содержит в себе содержимое оперативной памяти процесса на момент «падения» .
Идем дальше. А в каком каталоге хранятся файлы ТЖ?.
По умолчанию ТЖ создается в каталоге:
%USERPROFILE%\Local Settings\Application Data\1C\1Cv82\
Если используется Windows Vista и выше, то будет использоваться каталог: %LOCALAPPDATA%\1C\1Cv82\
Для 8.3 вместо каталога 1Cv82 используется 1Cv8.
Но этот каталог можно изменить. Об этом чуть ниже.
Как включить ТЖ?
По умолчанию технологический журнал включен, и настроен на сохранение минимальных дампов. С помощью специального файла мы можем настроить ТЖ. А именно можем изменить каталоги ТЖ, указать какие события должны регистрироваться в ТЖ и тд.
Я говорю о файле настроек ТЖ logcfg.xml .
Этот файл должен находится в каталоге conf в папке с установленной 1с, например
«D:\Program Files\1Cv8\conf»
Рассмотрим пример файла настроек для полного ТЖ.
config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\Program Files\1cv82\logs" history="24">
<event>
<ne property="Name" value=""/>
</event>
<property name="all">
</property>
</log>
</config>
Этот конфигурационный файл определяет вывод в технологический журнал всех событий вместе со всеми свойствами. Журнал будет сохраняться в течение недели (24 часа). Однако объем выводимой информации при этом будет очень большим.
Целесообразней настроить ТЖ только на интересующие нас события, например мы хотим посмотреть есть были ли в системе ошибки и долгие операции (>10 секунд)
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\Program Files\1cv82\logs" history="168">
<event>
<eq property="Name" value="PROC"/>
</event>
<event>
<eq property="Name" value="SCOM"/>
</event>
<event>
<eq property="Name" value="CONN"/>
</event>
<event>
<eq property="Name" value="EXCP"/>
</event>
<event>
<eq property="Name" value="ADMIN"/>
</event>
<event>
<eq property="Name" value="QERR"/>
</event>
<event>
<gt property="Duration" value="100000"/>
</event>
<property name="all">
</property>
</log>
</config>
Самые распространенные события ТЖ:
EXCP – исключительные ситуации приложений системы «1С:Предприятие», которые штатно не обрабатываются и могут послужить причиной̆ аварийного завершения серверного процесса или подсоединенного к нему клиентского процесса.
EXCPCNTX – события, которые начались, но не закончились в момент возникновения нештатной̆ ситуации.
DBMSSQL – исполнение операторов SQL СУБД Microsoft SQL Server. Для каждой СУБД используется свое событие (BPOSTGRS, DBORACLE, DB2, DBV8DBENG – файловый вариант)
ADMIN – действия администратора кластера в консоли кластеров.
PROC – события, относящиеся к процессу целиком и влияющие на дальнейшую работоспособность процесса. Например: старт, завершение, аварийное завершение и т. п.
CALL – входящий удалённый вызов (удалённый вызов на стороне приемника вызова). Например, если вы из клиента вызываете функцию на сервере, то в ТЖ на сервере будет записано событие CALL.
SCALL – исходящий удалённый вызов (исходящий вызов на стороне источника вызова). Например, если вы из клиента вызываете функцию на сервере, то в ТЖ на клиенте будет записано событие SCALL.
SESN – действия, относящиеся к сеансу работы. Например: начало сеанса, окончание сеанса.
TDEADLOCK – обнаружена взаимоблокировка в управляемом режиме блокировок.
TTIMEOUT – ошибка по таймауту на управляемых блокировках.
TLOCK – установка транзакционной блокировки в управляемом режиме блокировок.
С помощью настроек ТЖ можно отфильтровать практически любые интересующие нас события.
Допустим хотим видеть в ТЖ только ошибки и информацию о запросах к таблице AccRg105, которые длились более 3 секунд. Тогда logcfg должен выглядеть следующим образом.
Между двумя работает логическое ИЛИ, т.е. при возникновении любого из событий оно будет записано в ТЖ.
Внутри одного работает логическое И , т.е. данное событие будет записано только в том случае, если будут выполнены все условия внутри одного .
При такой настройке событие EXCP будет записываться всегда, а событие DBMSSQL только в том случае, если в любом месте текста запроса содержится строка «AccRg105» и при этом запрос выполнялся дольше 3 секунд. Фильтр на длительность события, надо ставить в десятитысячных долях секунды независимо от версии платформы. В данном примере мы используем несколько условий: eq, gt и like.
Можно использовать следующие условия:
- eq – равно;
- ne – не равно;
- gt – больше;
- ge – больше или равно;
- lt – меньше;
- le – меньше или равно;
- like – соответствие маске.
В окончании добавлю еще пару примечаний:
Платформа раз в минуту считывает данные из файла настроек, поэтому не стоит горячится и сразу проверять файлы, только спокойствие все будет через минуточку)
Если Вы не собираетесь посылать в фирму 1с данные дампов, то не зачем их и хранить, в файле настроек не указывайте строку dump location.
Если Вы собираетесь хранить файлы ТЖ в каталоге отличном от каталога по умолчанию, то лучше предварительно создайте его сами.
В тестовой базе я умышленно создал превышение таймаута на блокировке,
На примере этого файла можете посмотреть как выглядит лог файл