Каждый разработчик знает: чтобы разобраться, когда программа выдает ошибки, придется смотреть логи. Для 1С в этой роли выступает специальный механизм платформы – технологический журнал. Разобраться в его настройке и работе – достаточно сложно, но чтобы каждый раз при возникновении ошибки не обращаться к специалистам по сопровождению и доработке конфигураций 1С, сделать это все-таки стоит.
Включение технологического журнала
Суть этого механизма в том, чтобы 1С записывала выбранные действия в файл формата XML, расположенный в определенном месте. Для операционных систем семейства Windows этот путь:
- «C:\Program Files\1cv8\conf»
Если же вы используете Linux, то:
- «/home/usr1cv8/.1cv8/1C/1cv8/conf»
Для примера рассмотрим простейшую структуру этого файла под именем «logcfg.xml» и опишем ее основные разделы:
- Log – в реквизит location указывают месторасположение логов. Это должен быть существующий каталог, а у пользователей должны быть права на запись в него. Речь идет о пользователях, от имени которых может запускаться 1С, и, соответственно, могут записываться логи при определенных событиях. Реквизит history отражает время хранения логов в часах;
- Event – здесь отражаются фиксируемые события с помощью свойств property и name;
- Property – указанное значение в свойстве name отражает настройку, отвечающую за набор событий, попадающих в технологический журнал.
Существует множество различных настроек, указываемых в свойстве name. Не разобравшись в этом перечне, невозможно правильно настроить файл logcfg.sml. При этом неправильно настроенный технологический журнал очень опасен: резко увеличивающийся объем логов и падение в несколько раз производительности сервера станут неприятным исходом.
Перечислим основные параметры, достаточные для понимания большинства проблем:
- ALL – все события;
- ADMIN – действия администратора;
- CONN – установка и разрыв клиентской сессии с сервером;
- EXCP – исключительные ситуации, причины аварийного разрыва сессий;
- EXCPCNTX – исполняющиеся события в момент возникновения аварийной ситуации;
- LEAKS – регистрация утечки памяти из-за ошибок в конфигурации;
- MEM – утечки памяти на серверных процессах;
- PROC – этапы процессов – начало, окончание;
- QERR – ошибки компиляции запросов и ограничения по правам;
- SCOM – создание и удаление объектов на сервере.
Естественно, существует гораздо больше ключей, но они требуются нечасто. Узнать их можно из интернета или руководства администратора, которое выдается вместе с покупкой конфигурации в 1С. После того как вы ознакомились со всеми ключами, выбрали нужные и сформировали файл в нужной директории, осталось запустить журнал.
Для этого нужно либо запустить клиентское приложение 1С, либо перезагрузить сервер. В результате для каждой сессии создается отдельная папка с идентификатором, в которую пишутся действия пользователя в текстовые файлы. Все логи разбиты по 1 часу и названы в соответствии со временем начала. Логи за 3 сентября 2018 года с 12-00 до 13-00 запишутся в файл с именем «18090312».
Настройка систем семейства Linux для включения ТЖ
Сам журнал и его включение никаких особенностей не имеет на другой платформе, но ее архитектура достаточно сложна для начинающих администраторов. Необходимое расположение файла с настройками технологического журнала уже было обозначено, но в системе нет такой директории. Подготовить систему к регистрации логов 1С поможет следующий алгоритм действий в консоли:
-
Создаем нужный каталог внутри скрытой директории «.1cv8». В файловом менеджере ее невозможно увидеть, поэтому вводим следующую команду в консоли:
- mkdir /home/usr1cv8/.1cv8/1C/1cv8/conf
-
Создаем сам файл настроек формата xml:
- Touch /home/usr1cv8/.1cv8/1C/1cv8/conf/logcfg.xml
-
Содержимое настроечного файла идентично версии для Windows, за исключением местоположения файлов логов. В операционных системах под Linux заведено, что все логи хранятся в папке «/var/log». Конечно, от этого правила можно отступить, но это приведет лишь в путанице, поэтому этого делать не стоит. В результате раздел log будет выглядеть так:
- log location=”/var/log/1C” history=”168"
-
Естественно, эту папку нужно будет создать:
- mkdir /var/log/1C
-
Также для осуществления записи в только что созданную папку, необходимо дать на это права тем сотрудникам, которые будут работать с 1С. Следующей командой мы устанавливаем пользователя и всю группу 1С в качестве владельца на новый каталог:
- chown usr1cv8:grp1cv8 /var/log/1C
-
Чтобы появились папки и началось ведение логов на сервере 1С, необходимо перезапустить его процесс командой:
- service srv1cv83 restart
-
Вышеперечисленные действия позволят включить технологический журнал и фиксировать нужные события на сервере 1С. Если вы хотите вести учет действий клиентских приложений, то придется сделать дополнительные настройки. Проблема в том, что настройки платформы создаются для каждого пользователя отдельно и хранятся в домашних каталогах. Чтобы настроить права пользователя на запись логов в указанной папке, нужно включить его в группу «grp1cv8»:
- usermod –a –G grp1cv8 IvanovIC
-
Также потребуется редактировать права на запись в папку логов, чтобы группа могла писать наравне с владельцем:
- chmod 775 /var/log/1C
Чтобы фиксация логов начала функционировать, пользователю необходимо завершить сеанс и заново войти в систему. После этих действий в папке /var/log/1C начнут создаваться папки и файлы с данными.
Анализ данных технологического журнала
Мы включаем технологический журнал не просто так, нам надо разобраться в какой-либо проблеме. Значит, нам необходимо понимать, что же нам сообщает этот механизм. Для этого нам нужно проанализировать логи технологического журнала. Все необходимые нам данные мы сможем найти в папке, которую указывали в настроечном файле.
При открытии директории мы увидим несколько папок, названных по имени и идентификатору процесса, действия которого записываются. Необходимо использовать эти два параметра в связке, так как процессов с одинаковым именем может создаваться несколько. Внутри каталогов вы увидите текстовые файлы с датой в имени и расширением log. Помните, что система хранит только те файлы, которые младше количества часов, указанных в параметре history в файле настроек.
Чтобы понимать, что можно увидеть в логах, разберем всю информацию, которая там находиться. 1С пишет данные формата определенного шаблона «MM:SS.TTTT-L,Name,Level,Properties», где:
- MM – порядковый номер минуты окончания события в часе, указанном в названии;
- SS – порядковый номер секунды в вышеуказанной минуте;
- TTTT – номер миллионной доли. В более ранних версиях стоял порядковый номер десятитысячной доли секунды;
- L – длительность события в миллионных долях в версии 1С 8.3. Для ранних версий – в десятитысячных долях;
- Name – имя события в системе;
- Level – уровень окончившегося события в очереди потока;
- Properties – в этом параметре перечислены свойства операции. Записываются по шаблону «ИмяСвойства=ЗначениеСвойства» и разделяются запятыми.
Проанализируем пример строки из логов технологического журнала файла «18090312.log»:
- 12:13:569 – минуты, секунды и миллионные доли секунды. Совместно с названием файла получаем информацию, что данное событие окончилось 3 сентября 2018 года в 12:12:13,000569;
- 1 – длительность события – 0,000001 секунды;
- DMBSQL,3 – наименование и уровень окончившегося события;
- Process=rphost – указывает на конкретный процесс, чей лог записан;
- p:processName=TestBase – указывает, что логи пишутся для базы под названием «TestBase»;
- t:clientID=1572,t:applicationName=BackgroundJob – в этих свойствах указаны идентификаторы соединения с клиентов и клиентской программы, соответственно;
- t:connectID =1236 – номер соединения с ИБ;
- SessionID=234 – идентификатор сеанса текущего потока;
- Usr=DefUser,Trans=0,dbpid=11 – имя пользователя, показатель открытой или закрытой транзакции и идентификатор связи сервера приложений 1С с сервером БД;
- Sql – текст запроса на языке SQL;
- Context – ключевое значение, показывающее нам, какая строка кода в 1С породила событие.
Умение настраивать и анализировать логи технологического журнала обязательно пригодятся любому разработчику 1С. Попробовав решить таким образом проблему однажды, вы поймете, насколько мощный это инструмент. Сегодня существует вспомогательное ПО для анализа логов, но понимать их суть должен любой профессиональный администратор 1С.
консультация эксперта
самые свежие новости 1 раз в месяц