Журнал регистрации 1С разросся: сокращаем, удаляем, настраиваем хранение
Содержание
Очистить логи 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весит больше самой базы; - 🐢 журнал регистрации открывается минутами, отбор по пользователю «висит»;
- 📉 на системном диске сервера заканчивается место;
- ⏳ резервная копия каталога файловой базы стала заметно дольше.
Размер папки проверьте до очистки и запишите. После сокращения сравните: так вы поймёте, помогла ли операция или место занимает что-то другое.
Как сократить журнал регистрации в конфигураторе
Это штатный и самый безопасный способ. Работает для файловых и серверных баз, для обоих форматов журнала.
- Сделайте резервную копию базы
или хотя бы скопируйте папку
1Cv8Log. - Запустите базу в режиме «Конфигуратор» под пользователем с правами администратора.
- Откройте
Администрирование → Настройка журнала регистрации. - Нажмите кнопку
Сократить…. - Укажите дату. События до этой даты будут удалены.
- Если записи могут понадобиться (проверка, разбор инцидента), включите сохранение удаляемых событий в файл и укажите путь.
- Нажмите «ОК» и дождитесь окончания. На журнале в 20–30 ГБ это может занять десятки минут.
Монопольный режим для сокращения не нужен: пользователи могут продолжать работать. Но на больших журналах операция нагружает диск, поэтому запускайте её вечером.
Какую дату выбрать? Ориентир для обычной бухгалтерской базы — оставить 3–6 месяцев. Если служба безопасности или аудит требует историю за год, выгрузите старые события в файл и только потом сокращайте.
Журнал регистрации — единственный штатный способ узнать, кто и когда изменил или удалил документ. Не сокращайте журнал во время проверки или разбирательства по ошибкам учёта — сначала выгрузите нужный период.
Если файл SQLite не уменьшился
После сокращения журнала в формате .lgd файл иногда остаётся прежнего размера: удалённые записи освободили место внутри файла, но не на диске. Сжать его можно утилитой sqlite3 командой VACUUM:
sqlite3 "D:\Bases\Buh\1Cv8Log\1Cv8.lgd" "VACUUM;"
Делайте это только после копии файла и только когда журнал никто не держит открытым. Для серверной базы это значит остановить службу агента сервера , а это оборвёт сеансы всех пользователей кластера. Выбирайте нерабочее время и предупредите людей заранее.
Удаление файлов журнала вручную в файловой базе
Когда конфигуратор не открывается (например, из-за нехватки места на диске), журнал регистрации файловой базы можно почистить напрямую.
- Закройте все сеансы: попросите пользователей выйти, проверьте, что в
1Cv8.1CDникто не работает . - Скопируйте папку
1Cv8Logна другой диск — на случай, если журнал понадобится. - Откройте папку
1Cv8Logв каталоге базы. - Дальше зависит от формата:
- последовательный — удалите старые файлы
.lgp, ориентируясь на дату в имени. Последние 2–3 файла и1Cv8.lgfоставьте; - SQLite — частично удалить нельзя. Можно удалить
1Cv8.lgdцеликом: при следующем входе платформа создаст новый пустой журнал.
- последовательный — удалите старые файлы
- Запустите базу и откройте журнал регистрации: он должен открыться, а свежие события — появиться.
Файл 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или опцию сохранения в окне сокращения.