Журнал регистрации разросся: как уменьшить его без потери базы

· 9 мин

Содержание

Журнал регистрации лежит отдельным файлом рядом с базой — 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С:Предприятие откройте Главное меню → Все функции → Журнал регистрации (если пункта Все функции нет — включите его в настройках параметров). Сгруппируйте список по колонке Событие или задайте отбор по важности — и сразу увидите, что львиную долю записей дают не ошибки, а рутинные обращения к данным и аутентификация сеансов. Это и есть кандидаты на отключение.

  1. Откройте базу в конфигураторе.
  2. Меню Администрирование → Настройка журнала регистрации.
  3. В окне — четыре флажка уровней важности: Ошибка, Предупреждение, Информация, Примечание.
  4. Снимите Информация и Примечание — именно они дают основной поток записей.
  5. Оставьте включёнными Ошибка и Предупреждение — без них вы потеряете диагностику реальных сбоев.

Снятие флажков не чистит то, что уже накопилось, — оно только уменьшает прирост. Старые записи придётся убирать отдельно (способы 2–3).

Настройка применяется сразу и действует на всё, что платформа пишет после сохранения. Для клиент-серверной базы менять уровни тоже нужно из конфигуратора, подключённого к этой базе.

На практике отключение Информация и Примечание на оживлённой базе снижает суточный прирост журнала в разы — ошибки и предупреждения занимают несравнимо меньше места, чем поток служебных записей. При этом всё, что нужно для разбора сбоев и инцидентов безопасности, в журнале остаётся.

Способ 2: сократить старые записи средствами конфигуратора

Штатный и безопасный способ убрать накопленное — не удаляя файл целиком.

В том же окне Администрирование → Настройка журнала регистрации есть кнопка Сократить…. Она открывает диалог, где вы:

  • указываете дату в поле «Удалить события, записанные до:» — всё, что старше, будет вырезано;
  • при желании ставите флажок «Записать удаляемые события в файл» и задаёте путь — это и есть «архивация»: платформа сначала выгрузит удаляемые записи в файл, и только потом сотрёт их из журнала.

После подтверждения платформа удаляет старые записи и пересобирает файл журнала, освобождая место на диске.

Важный нюанс именно для формата SQLite: при простом удалении строк файл базы данных сам по себе не сжимается — освобождённое место остаётся «внутри» файла. Штатное Сократить это учитывает и пересобирает файл, поэтому размер на диске действительно падает. Если же вы когда-то пробовали чистить журнал в обход платформы и файл не уменьшился — причина как раз в этом: не хватило перестроения (VACUUM).

Сколько держать историю — вопрос политики. Для диагностики сбоев обычно хватает последних одного-трёх месяцев. Если журнал нужен для контроля действий пользователей или требований безопасности, глубину хранения согласуйте с внутренним регламентом, а старые записи перед удалением выгружайте в файл-архив.

На большом журнале операция идёт долго и нагружает диск. Запускайте её, когда с базой активно не работают, — в нерабочее время или в технологическое окно. Пользовательские сеансы она не обрывает, но сильно конкурирует за диск.

Безопасное сокращение журнала
Выполнено: 0 / 6

Способ 3: удалить файл журнала напрямую

Самый быстрый и самый радикальный вариант. Подходит, когда история не нужна совсем, а место требуется немедленно.

  1. Убедитесь, что с базой никто не работает : в файловом режиме закрыты все сеансы, в клиент-серверном — завершены все соединения с этой базой.
  2. В папке 1Cv8Log удалите файл 1Cv8.lgd (и старые .lgf/.lgp, если остались от прежнего формата).
  3. При следующем запуске платформа создаст новый пустой журнал.

Удаление стирает всю историю без возможности восстановления. Если есть малейшее сомнение — сначала скопируйте файл в сторону, потом удаляйте.

Удалять или перемещать 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?
Безопасно только при отсутствии активных подключений к базе. При этом теряется вся история. Если история может понадобиться — сначала скопируйте файл, потом удаляйте.
Почему вместо одного файла журнала у меня целая папка мелких файлов?
Это старый текстовый формат журнала (до платформы 8.3.5) — файлы .lgf и .lgp. Начиная с 8.3.5 журнал хранится единым SQLite-файлом 1Cv8.lgd.
Нужен ли монопольный доступ, чтобы сократить журнал?
Для кнопки Сократить монополия не обязательна, но операцию лучше делать, когда журнал активно не пишется. А вот удалять файл напрямую можно только при полностью закрытых сеансах.