При настройке Технологического журнала (ТЖ) многие администраторы сталкиваются с тем, что файловая система сервера буквально «засоряется» огромным количеством пустых папок и файлов. Даже при узкой фильтрации событий, 1С создает структуру каталогов для всех запущенных процессов кластера. Давайте разберемся, почему так происходит и как с этим бороться.
Важно понимать, что архитектура ТЖ в платформе 1С устроена таким образом, что она подготавливает инфраструктуру для записи событий заранее. В момент старта процесса (будь то rphost, rmngr или ragent), платформа проверяет настройки logcfg.xml. Если процесс теоретически может попасть под заданные критерии, система создает соответствующую папку и файл в каждом указанном каталоге location.
Проблема заключается в том, что фильтр p:processName, который вы указываете в настройках, работает уже на этапе фиксации события (записи в файл), а не на этапе инициализации структуры папок. Система создает «пустышку» проактивно, «предполагая», что событие может произойти. Именно поэтому попытки ограничить создание папок только фильтрами внутри logcfg.xml часто не приносят желаемого результата.
Полностью запретить платформе создавать структуру директорий на текущем уровне архитектуры невозможно, так как это базовый механизм работы ТЖ. Однако мы можем значительно снизить влияние этого «мусора» на сервер, используя следующие подходы:
logcfg.xml. Избегайте создания избыточного количества отдельных журналов с разными путями. Каждый дополнительный блок log в вашем файле конфигурации принуждает платформу создавать полный набор папок для каждого процесса кластера. Старайтесь объединять логические группы событий в один или два основных журнала.history, чтобы ограничить время хранения логов. Это не отменит создание файлов, но позволит автоматизировать удаление старых данных, которые больше не нужны для анализа.Рассмотрим, как можно реализовать очистку «мусора» с помощью скрипта PowerShell. Этот подход позволяет вам собирать любые нужные данные, не беспокоясь о том, что пустые файлы забьют дисковое пространство.
# Скрипт для удаления пустых файлов логов ТЖ
$logPath = "C:\1C\Logs"
# Удаляем все файлы размером 0 байт
Get-ChildItem -Path $logPath -Filter "*.log" -Recurse | Where-Object {$_.Length -eq 0} | Remove-Item -Force
# Удаляем пустые папки (после удаления файлов они станут пустыми)
Get-ChildItem -Path $logPath -Recurse | Where-Object {$_.PSIsContainer -and (Get-ChildItem -Path $_.FullName | Measure-Object).Count -eq 0} | Remove-Item -Force
Этот скрипт можно запускать один раз в сутки. Он проанализирует структуру папок, удалит файлы, в которые не было записано ни одного события, а затем подчистит пустые директории. Такой подход позволяет сохранить «чистоту» на сервере, не отказываясь от глубокого анализа работы платформы.
Проанализируем ситуацию: количество папок всегда будет прямо пропорционально количеству описанных журналов в logcfg.xml и количеству активных рабочих процессов rphost. Если вы видите, что папки создаются даже для тех процессов, которые вас не интересуют (например, mmc или ragent), помните, что это не ошибка настройки, а штатное поведение движка ТЖ.
Совет: Если ваша задача — поиск конкретной проблемы (например, блокировки), включайте ТЖ только на необходимый интервал времени, а не держите его постоянно включенным с широкими фильтрами. Если же мониторинг должен быть постоянным, сосредоточьтесь на качественной автоматизации удаления пустых файлов, а не на попытках «сломать» логику работы платформы, так как последняя является жестко заданной в коде 1С.
Применяя данные методы, вы сможете успешно собирать статистику tlock, ttimeout или tdeadlock, сохраняя при этом порядок в файловой системе вашего сервера.