Копия журнала регистрации 1С: где лежат файлы и как перенести их без потерь
Содержание
Чтобы скопировать журнал регистрации 1С 8.3, скопируйте папку 1Cv8Log целиком. В файловой базе она лежит в каталоге самой базы, в клиент-серверной — на сервере 1С в srvinfo\reg_1541\<GUID базы>\1Cv8Log. Если нужна не вся история, а события за период, выгрузите их в XML из формы журнала с отбором по датам.
Обычно журнал копируют в трёх случаях: базу переносят на другой сервер и не хотят терять историю, журнал разросся и его надо архивировать перед сокращением, или идёт разбор инцидента и события нужно отдать на анализ. Ниже — все три сценария, с путями, командами и проверкой результата.
Как устроено хранение журнала регистрации в 1С 8.3
Журнал регистрации — это не часть базы данных. Он хранится отдельными файлами рядом с ней. Отсюда главное следствие:
- 📦 выгрузка в
.dtжурнал не содержит; - 🗄️ резервная копия SQL-базы (MS SQL, PostgreSQL) журнал не содержит;
- 📁 копия каталога файловой базы содержит журнал, только если вы скопировали и подпапку
1Cv8Log.
Внутри 1Cv8Log вы увидите файлы одного из двух форматов.
| Формат | Файлы | Как устроен |
|---|---|---|
| Новый (SQLite) | 1Cv8.lgd | Одна база SQLite со всеми событиями |
| Старый (последовательный) | 1Cv8.lgf + много *.lgp | 1Cv8.lgf — словарь (пользователи, компьютеры, объекты метаданных), *.lgp — сами события, по файлу на период |
Платформа понимает, какой формат использовать, по тому, какой файл лежит в папке. Есть 1Cv8.lgd — пишет в SQLite. Есть 1Cv8.lgf — пишет последовательными файлами.
В старом формате файлы *.lgp без 1Cv8.lgf бесполезны. В них хранятся не имена пользователей и объектов, а ссылки на словарь. Копируйте 1Cv8.lgf всегда вместе с .lgp, иначе журнал откроется пустым или с «неизвестными» пользователями.
Где искать папку 1Cv8Log
Файловая база. Откройте список баз, выделите нужную, нажмите «Изменить» — в строке подключения будет каталог. В нём рядом с файлом 1Cv8.1CD лежит папка 1Cv8Log.
Клиент-серверная база . Журнал пишет сервер 1С, поэтому папка находится на машине с рабочим процессом, а не на SQL-сервере. Пути по умолчанию для службы, установленной штатным инсталлятором:
| ОС сервера | Каталог |
|---|---|
| Windows | C:\Program Files\1cv8\srvinfo\reg_1541\<GUID базы>\1Cv8Log |
| Linux | /home/usr1cv8/.1cv8/1C/1cv8/reg_1541/<GUID базы>/1Cv8Log |
Если при установке каталог srvinfo меняли, его путь виден в параметрах запуска службы агента сервера (ключ -d). Число 1541 — порт менеджера кластера; при нестандартном порте имя папки будет другим.
Как узнать GUID базы
Папок с GUID в reg_1541 столько же, сколько баз в кластере. Чтобы найти нужную:
- Выполните на сервере
rac cluster listи возьмите идентификатор кластера. - Выполните
rac infobase summary list --cluster=<id кластера>. - В выводе у каждой базы есть поле
infobase(это GUID) и полеname. Найдите строку с именем вашей базы.
Без rac подойдёт файл 1CV8Clst.lst в той же папке reg_1541: в нём рядом с каждым именем базы записан её GUID. Открывайте его только на чтение.
Подготовка: права и место на диске перед копированием журнала
До копирования проверьте три вещи.
- 🔑 Права в ОС. Служба сервера 1С работает от отдельной учётной записи (по умолчанию
USR1CV8). Папкиsrvinfoпо умолчанию доступны ей и администраторам. Копировать нужно под учёткой с правами администратора сервера или выдать себе чтение на нужную папку. - 👤 Права в 1С. Для выгрузки через интерфейс пользователю нужно право «Журнал регистрации» — оно есть у роли полных прав. Обычный бухгалтер журнал не откроет.
- 💾 Место. Журнал активной базы за пару лет легко вырастает до десятков гигабайт. Посмотрите размер
1Cv8Logзаранее и проверьте, что на целевом диске места с запасом.
Ещё один момент — что именно нужно: полный журнал или события за период. Полная копия — это файлы. Выборка по датам, пользователю или событию — это выгрузка в XML.
Способ 1. Выгрузка журнала регистрации в XML средствами платформы
Подходит, когда нужна часть журнала: события за месяц, действия одного пользователя, только ошибки. Доступа к файлам сервера не требует.
- В режиме 1С:Предприятие откройте журнал. В типовых конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11):
Администрирование → Обслуживание → Журнал регистрации. Универсальный путь:Главное меню → Все функции → Стандартные → Журнал регистрации. - Если пункта «Все функции» нет, включите его:
Главное меню → Сервис → Параметры → Отображать команду «Все функции». - Задайте отбор: период, пользователи, события, уровень важности. Без отбора выгрузка всего журнала может идти долго и дать огромный файл.
- В стандартной форме журнала найдите в командной панели или в меню «Ещё» команду выгрузки журнала в файл и укажите путь для
.xml.
Тот же результат даёт встроенный язык. Код ниже выполняется на сервере и сохраняет события за вчерашний день:
&НаСервере
Процедура ВыгрузитьЖурналЗаВчера()
Вчера = ТекущаяДатаСеанса() - 86400;
Отбор = Новый Структура;
Отбор.Вставить("ДатаНачала", НачалоДня(Вчера));
Отбор.Вставить("ДатаОкончания", КонецДня(Вчера));
ИмяФайла = "D:\LogArchive\ЖР_" + Формат(Вчера, "ДФ=yyyyMMdd") + ".xml";
ВыгрузитьЖурналРегистрации(ИмяФайла, Отбор);
КонецПроцедуры
Путь D:\LogArchive — это диск сервера 1С, а не компьютера пользователя. Папка должна существовать, и у учётки службы должно быть право записи в неё.
XML удобен для анализа сторонними средствами, но обратно в журнал другой базы его не загрузить. Для переноса истории на новый сервер нужен способ с файлами.
Способ 2. Копирование журнала регистрации на клиент-серверной базе
На серверной базе журнал живой: рабочий процесс постоянно дописывает в него события. Просто скопировать открытый файл можно, но копия может оказаться несогласованной.
Старый формат (.lgf/.lgp)
- Скопируйте все
*.lgp, кроме самого свежего по дате изменения — он сейчас открыт на запись. - Скопируйте
1Cv8.lgf. - Последний
.lgpскопируйте в момент без активности пользователей (ночью) или после остановки службы.
Закрытые .lgp за прошлые периоды больше не меняются, их можно копировать в любое время.
Новый формат (.lgd)
Файл SQLite надёжнее копировать не проводником, а штатной командой SQLite. Она делает согласованный снимок даже при работающей записи:
sqlite3.exe "C:\Program Files\1cv8\srvinfo\reg_1541\<GUID>\1Cv8Log\1Cv8.lgd" ".backup 'D:\LogArchive\1Cv8.lgd'"
Утилиту sqlite3 скачивают с сайта проекта SQLite, на сервер 1С она не ставится сама. Работайте только с копией: открывать рабочий 1Cv8.lgd в сторонних редакторах на запись нельзя.
Почему не через SQL
Частый запрос — «скопировать журнал средствами SQL». На платформе 8.3 это не сработает: в таблицах базы на MS SQL или PostgreSQL событий журнала нет. Бэкап SQL сохраняет данные, а журнал нужно забирать с сервера 1С отдельно, файлами.
Перенос журнала на другой сервер
Сценарий: базу переносят на новый кластер, история изменений нужна там же.
- Создайте базу на новом кластере и загрузите данные (бэкап SQL или
.dt). - Найдите GUID новой базы — он другой, чем на старом сервере.
- Предупредите пользователей и остановите службу агента сервера 1С на новом сервере. Все сеансы на этом сервере при остановке службы оборвутся — делайте это вне рабочего времени.
- Замените содержимое
reg_1541\<новый GUID>\1Cv8Logскопированными файлами старого журнала. - Проверьте, что у учётки службы есть права на новые файлы, и запустите службу.
Формат при переносе сохраняется: какой файл вы положили, так платформа и будет писать.
Способ 3. Копирование журнала регистрации файловой базы
С файловой базой проще: журнал лежит в <каталог базы>\1Cv8Log, и пишет в него сам клиент 1С.
- Попросите всех выйти из базы. Проверить, что никто не остался, можно в Конфигураторе:
Администрирование → Активные пользователи. - Скопируйте папку
1Cv8Logцеликом в архив или в каталог новой базы. - Если копируете в другую файловую базу
, сначала закройте и её, затем замените в ней папку
1Cv8Log.
Когда файловую базу переносят копированием всего каталога, журнал переезжает вместе с ней автоматически. Отдельно его копировать нужно только при переносе через .dt.
Как открыть и проверить скопированный журнал
Скопированный журнал удобнее всего смотреть в отдельной пустой файловой базе — так вы не затронете рабочую.
- Создайте новую пустую файловую базу без конфигурации.
- Закройте её, удалите в её каталоге папку
1Cv8Log, положите на её место скопированную. - Откройте базу в Конфигураторе:
Администрирование → Журнал регистрации.
Имена пользователей, компьютеров и объектов берутся из словаря самого журнала, поэтому события читаются и без исходной конфигурации.
Проверка целостности и восстановление .lgd
Для файла SQLite есть встроенная проверка. Работайте с копией, не с рабочим файлом:
sqlite3.exe D:\LogArchive\1Cv8.lgd "PRAGMA integrity_check;"
Ответ ok — файл цел. Любой другой ответ — повреждение. Тогда можно попытаться вытащить уцелевшие данные в новый файл (команда .recover есть в свежих версиях sqlite3):
sqlite3.exe D:\LogArchive\1Cv8.lgd ".recover" | sqlite3.exe D:\LogArchive\1Cv8_recovered.lgd
Полного результата это не гарантирует: часть событий может пропасть. Если повреждён рабочий журнал на сервере, порядок такой: остановить службу в нерабочее время (сеансы оборвутся), перенести повреждённый файл в архив и запустить службу — платформа начнёт новый журнал. Историю потом смотрите по восстановленной копии.
Для старого формата инструмента восстановления нет. Повреждённый .lgp обычно теряет только свой период, а вот без исправного 1Cv8.lgf нечитаемым становится весь набор. Поэтому словарь стоит архивировать регулярно.
Автоматическое архивирование журнала регистрации
Ручное копирование забывается. Настройте его по расписанию — Планировщик заданий Windows или cron в Linux.
Старый формат: robocopy. Скрипт копирует новые и изменённые файлы, уже скопированные пропускает:
@echo off
set SRC=C:\Program Files\1cv8\srvinfo\reg_1541\<GUID>\1Cv8Log
set DST=\\backup\1c-logs\buh
robocopy "%SRC%" "%DST%" *.lgf *.lgp /XO /R:2 /W:5 /NP /LOG+:"%DST%\copy.log"
Новый формат: sqlite3 .backup — та же команда, что выше, только имя целевого файла с датой, чтобы копии не перезаписывали друг друга.
Средствами 1С — регламентное задание в расширении, которое раз в сутки вызывает процедуру выгрузки в XML из способа 1. Удобно, если нужен архив событий в читаемом виде, без доступа к файлам сервера.
Архив перед сокращением журнала
Большой журнал замедляет его просмотр, и его периодически сокращают. В Конфигураторе это Администрирование → Настройка журнала регистрации: там же задаётся уровень регистрации событий и есть кнопка сокращения журнала. При сокращении платформа предлагает сохранить удаляемые события в отдельный файл — не отказывайтесь от этого, если история может понадобиться при проверке или разборе инцидента.
Частые вопросы
Сохраняется ли журнал регистрации в выгрузке .dt?
.dt содержит только данные и конфигурацию. Журнал переносится отдельно, копированием папки 1Cv8Log.Можно ли объединить журналы двух баз в один?
Как перейти со старого формата журнала на SQLite?
1Cv8Log в архив и положите в пустую папку пустой файл 1Cv8.lgd. Старую историю смотрите по архивной копии.