|

Создание универсального механизма логирования в 1С


Содержание:

1. Зачем нужен универсальный механизм логирования в системе программ 1С

2. Интеграция в обработки и отчёты в системе 1С

3. Оптимизация производительности системы

Логирование — важный инструмент для анализа работы системы, отладки и мониторинга ошибок. В 1С логирование часто реализуется фрагментарно, что усложняет поддержку и анализ данных. В этой статье рассмотрим, как создать универсальный механизм логирования в 1С, который можно легко интегрировать в любую конфигурацию.

Зачем нужен универсальный механизм логирования в системе программ 1С

  1. Централизованное управление – все логи хранятся в одном месте.
  2. Гибкость – можно настраивать уровни детализации (ошибки, предупреждения, информационные сообщения).
  3. Автоматизация анализа – удобный поиск и фильтрация записей.
  4. Производительность – минимизация влияния на работу системы.

Проектирование механизма

1. Определение структуры хранения логов

Логи можно хранить:

  • В регистре сведений (удобно для анализа).
  • В таблице значений (если логи временные).
  • В файлах (для интеграции с внешними системами).

Пример структуры регистра сведений:

  • ДатаВремя – момент события.
  • ТипСобытия (Ошибка, Предупреждение, Информация).
  • Источник (модуль, метод, пользователь).
  • Сообщение – текст лога.
  • Данные – доп. информация в JSON или XML.

2. Уровни логирования

Рекомендуемые уровни:

  1. Error – критические ошибки.
  2. Warning – потенциальные проблемы.
  3. Info – информационные сообщения.
  4. Debug – отладочная информация (только для разработки).

3. Интерфейс записи логов

Создадим общий модуль Логирование с методами:

Процедура ЗаписатьЛог(ТипСобытия, Сообщение, Источник = “”, Данные = Неопределено) Экспорт     

             Запись = РегистрыСведений.Логи.СоздатьНаборЗаписей();

             Запись.ДатаВремя = ТекущаяДата();

             Запись.ТипСобытия = ТипСобытия;

             Запись.Сообщение = Сообщение;

             Запись.Источник = Источник;

             Запись.Данные = ПолучитьДанные(Данные);

             Запись.Записать(); 

КонецПроцедуры      

Функция ПолучитьДанные(Данные)

             ЗаписьJSON = Новый ЗаписьJSON;

             ЗаписьJSON.УстановитьСтроку();

             ЗаписатьJSON(ЗаписьJSON, Данные);

             Возврат ЗаписьJSON.Закрыть();

КонецФункции

4. Настройка фильтрации

Чтобы избежать переполнения логов, добавим настройки:

  • Максимальный размер логов (удаление старых записей).
  • Запись только ошибок в продуктивной базе.
  • Включение/отключение логирования для модулей.

Интеграция в обработки и отчёты в системе 1С

1. Обработка просмотра логов

Создадим обработку с:

  • Фильтрацией по дате, типу, источнику.
  • Возможностью экспорта в Excel.
  • Поиском по сообщениям.

2. Автоматическая очистка

Добавим регламентное задание для удаления старых записей:

Процедура ОчиститьЛоги() Экспорт

             Период = НачалоДня(ДобавитьМесяц(ТекущаяДата(), -1));

             Запрос = Новый Запрос(“ВЫБРАТЬ Логи.ДатаВремя ИЗ РегистрСведений.Логи КАК Логи ГДЕ Логи.ДатаВремя < &Период”);

             Запрос.УстановитьПараметр(“Период”, Период);

             Результат = Запрос.Выполнить().Выгрузить();

             Для каждого Строка Из Результат Цикл

                          НаборЗаписей = РегистрыСведений.Логи.СоздатьНаборЗаписей();

                          НаборЗаписей.Прочитать(Строка.ДатаВремя);

                          НаборЗаписей.Удалить();

             КонецЦикла;

КонецПроцедуры

Оптимизация производительности системы

  1. Асинхронная запись – если логирование частое, можно вынести в фоновое задание.
  2. Буферизация – запись не каждого события, а пачками.
  3. Отключение в продакшене – оставить только ошибки.

Универсальный механизм логирования упрощает отладку и мониторинг системы. Реализовав его один раз, можно использовать во всех конфигурациях, экономя время на разработку.

Дополнительно можно:

  • Добавить отправку логов на email/SMS при критических ошибках.
  • Интегрировать с системами мониторинга (Zabbix, Prometheus).
  • Реализовать логирование в файл для внешнего анализа.

Такой подход сделает поддержку 1С более удобной и предсказуемой.

Специалист компании ООО “Кодерлайн”,

Севальнев Станислав


    Помогла ли вам статья? Оставьте свой комментарий:

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Блог про 1С:Предприятие

    Copyright © 2024 TopKoder

    Мы занимаемся внедрением и обслуживанием программных продуктов 1С.