Журнал регистрации разросся: как уменьшить его без потери базы
Содержание
Журнал регистрации лежит отдельным файлом рядом с базой — 1Cv8.lgd в подпапке 1Cv8Log. Чтобы уменьшить его, саму базу трогать не нужно: открываете конфигуратор, идёте в Администрирование → Настройка журнала регистрации и там снижаете уровень записываемых событий и сокращаете старые записи.
Способы отличаются ценой. Настройка уровня событий бесплатна и ничего не теряет — просто журнал перестаёт пухнуть. Штатное «сокращение» вырезает старые записи, по желанию выгрузив их в файл. Удаление файла целиком освобождает место мгновенно, но стирает всю историю. Разберём пять рабочих приёмов — от безопасного к радикальному — и когда какой уместен.
| Способ | Что делает | Теряем ли историю |
|---|---|---|
| Снизить уровень событий | Уменьшает прирост на будущее | Нет |
| Сократить штатно | Удаляет записи старше даты | Нет (можно в архив) |
Удалить файл 1Cv8.lgd | Обнуляет журнал | Да, всю |
| Разделение по периодам + автоудаление | Режет журнал на файлы, старые удаляем | Только старые периоды |
| Перенос на другой диск | Освобождает системный диск | Нет |
Отчего журнал раздувается и где он лежит
По умолчанию платформа пишет в журнал почти всё: ошибки, предупреждения, а ещё — информационные сообщения и примечания вплоть до открытия каждой формы и обращения к объекту. На активной многопользовательской базе это даёт десятки гигабайт за год, причём основной объём — именно информационные записи, а не ошибки.
Чем это грозит:
- 📁 файл занимает место на диске — на системном разделе сервера это критично;
- 🐢 журнал долго открывается и фильтруется, анализ инцидентов превращается в мучение;
- ⛔ если диск заполнится под ноль, база может перестать запускаться — платформе некуда писать.
Где искать сам файл:
- Файловая база. В каталоге базы, подпапка
1Cv8Log, файл1Cv8.lgd. Путь к каталогу видно в окне запуска 1С: выделяете базу, жмётеИзменить— там полный путь. - Клиент-серверная база
. На сервере 1С, в рабочем каталоге кластера, внутри папки с длинным идентификатором (GUID) нужной информационной базы, подпапка
1Cv8Log. Каталог кластера по умолчанию —srvinfoрядом со службой на Windows или скрытый.1cv8в домашнем каталоге пользователя службы на Linux.
Какой именно GUID соответствует вашей базе, видно в консоли администрирования серверов 1С: откройте свойства нужной информационной базы — в них указан каталог. Если баз на кластере несколько, не перепутайте папки: у каждой свой 1Cv8Log.
Начиная с платформы 8.3.5, журнал хранится единым файлом 1Cv8.lgd в формате SQLite. В более ранних версиях это был набор текстовых файлов в той же папке 1Cv8Log (с расширениями .lgf и .lgp). Если видите много мелких файлов вместо одного — у вас старый формат.
Способ 1: снизить уровень регистрируемых событий
Это первое, что стоит сделать, — оно останавливает рост на будущее.
Перед тем как резать, полезно посмотреть, что именно забивает журнал. В режиме 1С:Предприятие откройте Главное меню → Все функции → Журнал регистрации (если пункта Все функции нет — включите его в настройках параметров). Сгруппируйте список по колонке Событие или задайте отбор по важности — и сразу увидите, что львиную долю записей дают не ошибки, а рутинные обращения к данным и аутентификация сеансов. Это и есть кандидаты на отключение.
- Откройте базу в конфигураторе.
- Меню
Администрирование → Настройка журнала регистрации. - В окне — четыре флажка уровней важности:
Ошибка,Предупреждение,Информация,Примечание. - Снимите
ИнформацияиПримечание— именно они дают основной поток записей. - Оставьте включёнными
ОшибкаиПредупреждение— без них вы потеряете диагностику реальных сбоев.
Снятие флажков не чистит то, что уже накопилось, — оно только уменьшает прирост. Старые записи придётся убирать отдельно (способы 2–3).
Настройка применяется сразу и действует на всё, что платформа пишет после сохранения. Для клиент-серверной базы менять уровни тоже нужно из конфигуратора, подключённого к этой базе.
На практике отключение Информация и Примечание на оживлённой базе снижает суточный прирост журнала в разы — ошибки и предупреждения занимают несравнимо меньше места, чем поток служебных записей. При этом всё, что нужно для разбора сбоев и инцидентов безопасности, в журнале остаётся.
Способ 2: сократить старые записи средствами конфигуратора
Штатный и безопасный способ убрать накопленное — не удаляя файл целиком.
В том же окне Администрирование → Настройка журнала регистрации есть кнопка Сократить…. Она открывает диалог, где вы:
- указываете дату в поле «Удалить события, записанные до:» — всё, что старше, будет вырезано;
- при желании ставите флажок «Записать удаляемые события в файл» и задаёте путь — это и есть «архивация»: платформа сначала выгрузит удаляемые записи в файл, и только потом сотрёт их из журнала.
После подтверждения платформа удаляет старые записи и пересобирает файл журнала, освобождая место на диске.
Важный нюанс именно для формата SQLite: при простом удалении строк файл базы данных сам по себе не сжимается — освобождённое место остаётся «внутри» файла. Штатное Сократить это учитывает и пересобирает файл, поэтому размер на диске действительно падает. Если же вы когда-то пробовали чистить журнал в обход платформы и файл не уменьшился — причина как раз в этом: не хватило перестроения (VACUUM).
Сколько держать историю — вопрос политики. Для диагностики сбоев обычно хватает последних одного-трёх месяцев. Если журнал нужен для контроля действий пользователей или требований безопасности, глубину хранения согласуйте с внутренним регламентом, а старые записи перед удалением выгружайте в файл-архив.
На большом журнале операция идёт долго и нагружает диск. Запускайте её, когда с базой активно не работают, — в нерабочее время или в технологическое окно. Пользовательские сеансы она не обрывает, но сильно конкурирует за диск.
Способ 3: удалить файл журнала напрямую
Самый быстрый и самый радикальный вариант. Подходит, когда история не нужна совсем, а место требуется немедленно.
- Убедитесь, что с базой никто не работает : в файловом режиме закрыты все сеансы, в клиент-серверном — завершены все соединения с этой базой.
- В папке
1Cv8Logудалите файл1Cv8.lgd(и старые.lgf/.lgp, если остались от прежнего формата). - При следующем запуске платформа создаст новый пустой журнал.
Удаление стирает всю историю без возможности восстановления. Если есть малейшее сомнение — сначала скопируйте файл в сторону, потом удаляйте.
Удалять или перемещать 1Cv8.lgd при работающих пользователях нельзя — платформа держит файл открытым, и вмешательство в этот момент может повредить журнал. Сначала выгоните всех из базы.
Отдельно про «удаление через SQL», о котором часто спрашивают. Журнал регистрации не хранится в базе СУБД — ни в MS SQL, ни в PostgreSQL. Это самостоятельный SQLite-файл на диске сервера. Поэтому обычным запросом к рабочей базе его не почистить: таблиц журнала в СУБД попросту нет.
Технически 1Cv8.lgd можно открыть сторонним SQLite-редактором и выполнить DELETE с последующим VACUUM, но делать так не стоит: формат не документирован и может меняться между релизами платформы, а ошибка оставит вас с битым журналом. Штатная кнопка Сократить делает ровно то же самое — вырезает записи и ужимает файл — только безопасно и поддерживаемым способом.
Способ 4: настроить разделение по периодам и автоочистку
Чтобы журнал не пришлось чистить вручную каждый квартал, настройте его разбиение.
В окне Настройка журнала регистрации есть параметр «Разделять хранение по периодам» со значениями вроде «по дням», «по месяцам» и т. д. Когда он включён, журнал пишется отдельными файлами на каждый период. Тогда старые периоды становится легко удалять — по файлу за месяц, не трогая текущие записи.
Про «автоматизацию регламентными заданиями» важно понимать: в типовых конфигурациях (БП 3.0, ЗУП 3.1, УТ 11) нет встроенного регламентного задания, которое чистит журнал регистрации. Поэтому автоматизируют не внутри 1С, а на уровне операционной системы:
- Планировщик задач ОС. Скрипт в нерабочее время удаляет файлы старых периодов из
1Cv8Log(это безопасно именно при разделении по периодам — текущий период не трогается). - Регламент на администраторе. Раз в квартал запускать
Сократитьвручную — минимум автоматики, максимум контроля.
Любой скрипт, который удаляет файлы журнала, должен работать тогда, когда с базой не работают. Удаление текущего файла при активных сеансах повредит журнал.
Способ 5: перенести журнал на отдельный диск
Если задача — разгрузить системный диск, журнал можно переселить. Но штатно перенести только журнал, отдельно от базы, платформа не позволяет — он всегда лежит рядом с данными.
Что реально работает:
- Файловая база. Переносится целиком: копируете каталог базы (вместе с
1Cv8Log) на другой диск и в окне запуска указываете новый путь. Отдельно вынести журнал нельзя. - Клиент-серверная база. Журналы всех баз лежат в каталоге кластера. Перенос каталога кластера на другой диск уводит туда данные всех баз кластера, журналы в том числе. Делается так: остановить службу 1С, перенести каталог (
srvinfoили аналог) на новый диск, указать новый путь в параметре запуска агента сервера (-d) или в свойствах службы, запустить службу. - Приём для опытных администраторов. На уровне ОС можно заменить папку
1Cv8Logсимволической ссылкой (junction на Windows, symlink на Linux), указывающей на другой диск. Платформа продолжит писать «в ту же папку», физически данные лягут на другой том. Способ рабочий, но неподдерживаемый 1С — применяйте, если уверены в администрировании ОС, и только при остановленной базе.
Перенос каталога кластера останавливает все базы на сервере и переселяет данные целиком, а не один журнал. Планируйте это как полноценное обслуживание сервера, а не быструю правку.
Частые ошибки при уменьшении журнала
- Путают журнал регистрации с технологическим журналом. Это разные механизмы: технологический журнал (ТЖ) настраивается файлом
logcfg.xmlи к1Cv8.lgdотношения не имеет. Если «журнал» разрастается именно папкой с XML-логами — чистить надо ТЖ, а не журнал регистрации. - Снимают флажок
Ошибка. Прирост упадёт, но вы ослепнете: реальные сбои перестанут фиксироваться. Убирайте толькоИнформацияиПримечание. - Трогают файл при работающих пользователях. Удаление или перемещение
1Cv8.lgdна живой базе — прямой путь к повреждённому журналу. - Ждут мгновенного освобождения места после
Сократить. На большом SQLite-файле пересборка занимает время; место вернётся по завершении операции, не раньше. - Правят
1Cv8.lgdсторонним SQLite-редактором. Неподдерживаемый формат легко сломать — пользуйтесь штатнымСократить. - Чистят журнал, но не меняют уровень событий. Через месяц-другой он разрастается снова. Способы работают в паре: снижение уровня гасит прирост, сокращение убирает уже накопленное. Сделайте и то, и другое — тогда разовая чистка не превратится в ежемесячную.
Частые вопросы
Можно ли вообще отключить журнал регистрации?
Влияет ли размер журнала на скорость работы базы?
Безопасно ли удалять файл 1Cv8.lgd?
Почему вместо одного файла журнала у меня целая папка мелких файлов?
.lgf и .lgp. Начиная с 8.3.5 журнал хранится единым SQLite-файлом 1Cv8.lgd.Нужен ли монопольный доступ, чтобы сократить журнал?
Сократить монополия не обязательна, но операцию лучше делать, когда журнал активно не пишется. А вот удалять файл напрямую можно только при полностью закрытых сеансах.