Журнал регистрации 1С разросся: сокращаем, удаляем, настраиваем хранение

· 9 мин

Содержание

Очистить логи 1С проще всего в конфигураторе: Администрирование → Настройка журнала регистрации → Сократить. Указываете дату, и все события до неё удаляются. Если базу открыть нельзя, журнал регистрации чистят удалением файлов из папки 1Cv8Log, но только при закрытых сеансах.

Под «логами 1С» часто понимают три разные вещи: журнал регистрации базы, технологический журнал сервера и журнал транзакций SQL Server. Чистятся они по-разному, поэтому сначала определите, что именно занимает место на диске.

Где хранятся логи 1С и как понять, что они раздулись

Журнал регистрации 1С:Предприятия 8.3 хранится не в таблицах базы, а в отдельных файлах. Для файловой и серверной базы место разное.

Вариант базыГде лежит журнал
ФайловаяПодпапка 1Cv8Log в каталоге базы (рядом с 1Cv8.1CD)
Клиент-серверная<каталог srvinfo>\reg_1541\<GUID базы>\1Cv8Log
Технологический журналКаталог из параметра location в файле logcfg.xml

Каталог srvinfo задаётся при установке сервера. Точный путь виден в свойствах службы «Агент сервера 1С:Предприятия 8.3»: в строке запуска ragent.exe после ключа -d. GUID базы можно узнать в консоли кластера или найти папку перебором: внутри каждой папки reg_1541 есть журналы своей базы, а самая тяжёлая обычно и есть виновник.

Формат файлов зависит от настройки:

  • 📄 Последовательный формат — файл 1Cv8.lgf (словарь: пользователи, компьютеры, метаданные) и много файлов .lgp с событиями. Имя .lgp — дата и время начала периода, например 20250301000000.lgp.
  • 🗄️ Формат SQLite — один файл 1Cv8.lgd. Удобен для отбора, но разрастается до десятков гигабайт одним куском.

Признаки, что журнал пора чистить:

  • 💾 папка 1Cv8Log весит больше самой базы;
  • 🐢 журнал регистрации открывается минутами, отбор по пользователю «висит»;
  • 📉 на системном диске сервера заканчивается место;
  • ⏳ резервная копия каталога файловой базы стала заметно дольше.

Размер папки проверьте до очистки и запишите. После сокращения сравните: так вы поймёте, помогла ли операция или место занимает что-то другое.

Как сократить журнал регистрации в конфигураторе

Это штатный и самый безопасный способ. Работает для файловых и серверных баз, для обоих форматов журнала.

  1. Сделайте резервную копию базы или хотя бы скопируйте папку 1Cv8Log.
  2. Запустите базу в режиме «Конфигуратор» под пользователем с правами администратора.
  3. Откройте Администрирование → Настройка журнала регистрации.
  4. Нажмите кнопку Сократить….
  5. Укажите дату. События до этой даты будут удалены.
  6. Если записи могут понадобиться (проверка, разбор инцидента), включите сохранение удаляемых событий в файл и укажите путь.
  7. Нажмите «ОК» и дождитесь окончания. На журнале в 20–30 ГБ это может занять десятки минут.

Монопольный режим для сокращения не нужен: пользователи могут продолжать работать. Но на больших журналах операция нагружает диск, поэтому запускайте её вечером.

Какую дату выбрать? Ориентир для обычной бухгалтерской базы — оставить 3–6 месяцев. Если служба безопасности или аудит требует историю за год, выгрузите старые события в файл и только потом сокращайте.

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

Если файл SQLite не уменьшился

После сокращения журнала в формате .lgd файл иногда остаётся прежнего размера: удалённые записи освободили место внутри файла, но не на диске. Сжать его можно утилитой sqlite3 командой VACUUM:

sqlite3 "D:\Bases\Buh\1Cv8Log\1Cv8.lgd" "VACUUM;"

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

Удаление файлов журнала вручную в файловой базе

Когда конфигуратор не открывается (например, из-за нехватки места на диске), журнал регистрации файловой базы можно почистить напрямую.

  1. Закройте все сеансы: попросите пользователей выйти, проверьте, что в 1Cv8.1CD никто не работает .
  2. Скопируйте папку 1Cv8Log на другой диск — на случай, если журнал понадобится.
  3. Откройте папку 1Cv8Log в каталоге базы.
  4. Дальше зависит от формата:
    • последовательный — удалите старые файлы .lgp, ориентируясь на дату в имени. Последние 2–3 файла и 1Cv8.lgf оставьте;
    • SQLite — частично удалить нельзя. Можно удалить 1Cv8.lgd целиком: при следующем входе платформа создаст новый пустой журнал.
  5. Запустите базу и откройте журнал регистрации: он должен открыться, а свежие события — появиться.

Файл 1Cv8.lgf хранит словарь, по которому расшифровываются записи в .lgp. Если удалить его и оставить файлы событий, старые записи прочитать уже не получится. Удаляйте либо выборочно .lgp, либо всю папку целиком.

Полное удаление папки 1Cv8Log — допустимый крайний вариант. База от этого не ломается, теряется только история событий.

Логи серверной базы: файлы кластера и журнал транзакций SQL

Журнал регистрации на сервере 1С

Для клиент-серверной базы журнал физически лежит на сервере 1С, а не на сервере СУБД. Путь — srvinfo\reg_1541\<GUID>\1Cv8Log.

Старые файлы .lgp прошлых периодов рабочий процесс обычно не держит, и их можно удалить без остановки. Текущий файл периода и 1Cv8.lgd заблокированы процессом rphost. Удалить их получится только после остановки службы агента сервера.

Остановка службы «Агент сервера 1С:Предприятия 8.3» обрывает сеансы всех баз кластера, не только той, которую вы чистите. Несохранённые документы пользователей пропадут. Делайте это в регламентное окно.

Если серверная база открывается, ручное удаление не нужно: сокращение через конфигуратор работает и для неё.

Журнал транзакций MS SQL Server

Нередко «логи 1С» на сервере — это не журнал регистрации, а файл .ldf базы в MS SQL. Он растёт при модели восстановления FULL, если не делать резервные копии журнала транзакций.

Таблиц журнала регистрации в SQL нет, поэтому DELETE по ним искать бесполезно. Работают с самим журналом транзакций:

-- Если точечное восстановление на момент времени не требуется
ALTER DATABASE [Buh] SET RECOVERY SIMPLE;
GO
USE [Buh];
GO
-- Узнать логическое имя файла журнала
SELECT name, type_desc, size/128 AS size_mb FROM sys.database_files;
GO
-- Сжать файл журнала до 1024 МБ
DBCC SHRINKFILE (N'Buh_log', 1024);
GO

Логическое имя Buh_log подставьте из результата запроса к sys.database_files.

Если точечное восстановление нужно, модель FULL оставьте, но настройте регулярное резервное копирование журнала транзакций (например, раз в час). После первой такой копии DBCC SHRINKFILE уменьшит файл.

Для PostgreSQL отдельного «файла лога базы» нет. Место там занимает каталог WAL и сами таблицы. Это уже задача обслуживания СУБД (VACUUM, настройка хранения WAL), а не журнала 1С.

Что именно занимает место?

Автоматическая очистка журнала регистрации по расписанию

Регламентного задания, которое сокращает журнал регистрации, в типовых конфигурациях нет. Из встроенного языка журнал можно читать и выгружать (ВыгрузитьЖурналРегистрации), а сокращают его средствами платформы. Поэтому автоматизацию делают снаружи — через командную строку конфигуратора и Планировщик заданий Windows.

У пакетного режима конфигуратора есть параметр /ReduceEventLogSize. Он принимает дату в формате ГГГГ-ММ-ДД и удаляет события до неё. Ключ -saveAs сохраняет удаляемые записи в файл.

Пример bat-файла для серверной базы, оставляющего последние 90 дней:

@echo off
rem Дата 90 дней назад в формате ГГГГ-ММ-ДД
for /f %%d in ('powershell -NoProfile -Command "(Get-Date).AddDays(-90).ToString('yyyy-MM-dd')"') do set CUT=%%d

"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" DESIGNER ^
  /S "srv1c\Buh" /N "Администратор" /P "пароль" ^
  /ReduceEventLogSize %CUT% -saveAs "E:\EventLogArchive\Buh_%CUT%.lgf" ^
  /Out "E:\EventLogArchive\reduce.log"

Что подставить:

  • путь к 1cv8.exe — вашей установленной версии платформы;
  • /S "сервер\база" для серверной базы или /F "D:\Bases\Buh" для файловой;
  • пользователя с правами администратора и его пароль.

Дальше в Планировщике заданий создайте задачу: запуск раз в неделю ночью, от имени пользователя, у которого есть доступ к каталогу архива. Файл reduce.log после первого прогона откройте и проверьте, что ошибок нет.

Пароль администратора в bat-файле лежит открытым текстом. Создайте для обслуживания отдельного пользователя 1С и ограничьте доступ к файлу скрипта правами NTFS.

Для последовательного формата есть и более грубый вариант: скрипт PowerShell, который удаляет файлы .lgp старше N дней. Он не требует запуска 1С, но не трогает 1Cv8.lgf и не работает с форматом SQLite:

$log = "D:\Bases\Buh\1Cv8Log"
Get-ChildItem $log -Filter *.lgp |
  Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-180) } |
  Remove-Item

Политика хранения: уровень регистрации, разделение по периодам, ротация

Чистить журнал раз в месяц вручную — лечение симптома. Причину убирают настройками в том же окне Администрирование → Настройка журнала регистрации.

Уровень регистрации. Платформа предлагает варианты от «Не регистрировать» до «Регистрировать все события». Для рабочей базы обычно достаточно ошибок, предупреждений и информации. Режим «все события» включайте на время разбора проблемы, а потом возвращайте обратно: именно он раздувает журнал быстрее всего.

Разделение по периодам. В последовательном формате журнал можно делить на файлы по периодам (например, по месяцам или по дням). Тогда старые периоды — это отдельные файлы .lgp, которые легко архивировать и удалять, не трогая текущий.

Что ещё пишет много событий:

  • 🔁 обмены данными и синхронизация, запускаемые каждые несколько минут;
  • ⚙️ регламентные задания с частым расписанием (загрузка курсов, проверка почты, ЭДО);
  • 🧩 расширения и обработки, которые пишут в журнал собственные события через ЗаписьЖурналаРегистрации.

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

Ротация технологического журнала

Технологический журнал включают файлом logcfg.xml для расследований: блокировок, медленных запросов, падений. Если его забыли выключить, он заполняет диск за дни.

Срок хранения задаёт атрибут history у элемента log — число часов:

<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="E:\techlog" history="24">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <property name="all"/>
  </log>
</config>

При history="24" платформа сама удаляет файлы старше суток. Когда расследование закончено, удалите или переименуйте logcfg.xml, а каталог из location очистите вручную.

Частые ошибки при очистке логов 1С

  • ❌ Удалили только 1Cv8.lgf, оставив .lgp. Старые события перестают читаться. Восстановите lgf из копии или удалите журнал целиком.
  • ❌ Стёрли журнал прямо во время работы пользователей. В файловой базе это может закончиться ошибкой при записи событий. Удаляйте файлы только при закрытых сеансах.
  • ❌ Чистили журнал регистрации, а место занимал .ldf. Перед очисткой проверьте, какая папка или файл реально выросли.
  • ❌ Оставили уровень «Регистрировать все события» после отладки. Через месяц журнал снова весит гигабайты.
  • ❌ Удалили историю, которая нужна для разбора. Потом не выяснить, кто провёл или удалил документ задним числом. Выгружайте период в файл через -saveAs или опцию сохранения в окне сокращения.

Частые вопросы

Сломается ли база, если удалить папку 1Cv8Log целиком?
Нет. Данные учёта хранятся отдельно. При следующем запуске платформа создаст пустой журнал регистрации, потеряется только история событий.
Можно ли сократить журнал регистрации, не выгоняя пользователей?
Да, сокращение через конфигуратор не требует монопольного режима. Но на большом журнале оно нагружает диск, поэтому лучше запускать его вне рабочего времени.
Влияет ли размер журнала на скорость работы самой базы?
На проведение документов почти не влияет. Тормозит открытие журнала, отбор по нему и резервное копирование каталога файловой базы, а на сервере растёт нагрузка на диск при записи событий.
Сколько хранить журнал регистрации?
Закон срок хранения журнала 1С не устанавливает. На практике для бухгалтерии оставляют 3–6 месяцев онлайн, а старое выгружают в архив минимум до закрытия года.
Почему журнал снова вырос через неделю?
Скорее всего, высокий уровень регистрации или частое регламентное задание с ошибкой. Найдите в журнале событие, которое повторяется чаще других, и устраните его причину.