Найти в Дзене
EFSOL

Настройка формата и оптимизация журнала регистрации 1С

Оглавление

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

Место хранения ЖР:

  • для клиент-серверного варианта - C:\Program Files\1cv8\srvinfo\reg_\\1Cv8Log\ *где, - идентификатор базы Узнать для конкретной бд в файле - \srvinfo\reg_\1CV8Clst.lst
  • для файлового варианта - в папке 1Cv8Log в директории базы

Существует два формата ЖР:

  • Новый формат журнала регистрации (SQLite, *.lgd )
  • Старый журнала регистрации (Файлойловый лог, *lgf)

ИЗМЕНЕНИЯ ФОРМАТА ЖР

Обязательно установите разделение ЖР по периодам, рекомендуется ставить день или неделя.

Через Конфигуратор 1С: Администрирование -> Настройка журнала регистрации -> Изменить формат.

Ручной: найдите в папке базы (…\srvinfo\reg_\) папку журнала регистрации (1Cv8Log), далее из папки 1Cv8Log удалить все файлы (или переместить, или переименовать папку), в папке 1Cv8Log создать пустой файл 1Cv8.lgf. Повторите эти шаги для каждой базы.

Автоматизированный. При помощи скрипта:

@echo off
set SRV_INFO="C:\Program Files\1cv8\srvinfo"
set BACKUP_PATH=C:\Backup\
rem offset = length of guid string and "1Cv8Log" string
set OFFSET=45
SetLocal
SetLocal EnableDelayedExpansion
cd /d %SRV_INFO%
for /R %%i in (*.lgd) do (
set FILE_PATH=%%~pi
set DST_PATH=!FILE_PATH:~-%OFFSET%!
@xcopy/hkryq "%%i" "%BACKUP_PATH%!DST_PATH!"
if not errorlevel 1 (
ren "%%i" tmp.delete 2>nul
if not errorlevel 1 (
echo Creating old-format log
copy nul "%%~dpi1Cv8.lgf"
) else (
echo Cannot delete file: %%i
)
del "%%~dpitmp.delete" 2>nul
)
)

Вставляем в текстовый редактор и сохраняем в формате .bat.

СОКРАЩЕНИЕ \ РЕЗЕРВИРОВАНИЕ

Старый формат ЖР. Если требуется хранить ЖР долгое время - резервируем на отдельный диск. Через Конфигуратор 1С: Администрирование -> Настройка журнала регистрации -> Сократить (выбираем директорию куда сохранять обрезанный ЖР).

Новый формат ЖР. Особенности нового формата SQLite - в этом режиме настройка «Разделять хранение журнала по периодам» в Конфигураторе отсутствует. Остаётся кнопка «Сократить» для обрезки части журнала и переноса обрезаемых событий в указанный файл. После этого размер 1Cv8.lgd не уменьшается. Для очистки необходимо выполнить команду vacuum.

Перед запуском команды обязательно сделайте резервную копию файла 1Cv8.lgd. Файл не должен быть занят. В файловом режиме — без активных сеансов, для клиент-серверного варианта — при остановленной службе Агента 1С. Для этих целей используется утилита sqlite3, которую можно скачать с официального сайта.

Пример команды: C:\SQLite\sqlite3.exe C:\Base\TestIB\1Cv8Log\1Cv8.lgd vacuum

УДАЛЕНИЕ ЖР

Если конфигурация не поддерживает сокращения ЖР или он попросту не требуются или необходимо удалить до определенного периода.

Powershell скрипт (старый формат ЖР, для всех баз за N дней):

##Удаление ЖР для всех баз за N дней
$JRbase = "C:\Program Files\1cv8\srvinfo\reg_1541\????????-????-????-????-????????????\1Cv8Log";
$curDay = Get-Date;
$DaysJRsave = "-35";
$oldestDay = $curDay.AddDays($DaysJRsave);
Get-ChildItem -Path $JRbase -Recurse -Include *.lg* | Where-Object {$_.LastWriteTime -le $oldestDay} | Remove-Item

Для конкретных баз за N дней за различные периоды:

##Удаление ЖР для конкретных баз за N дней за различные периоды
$curDay = Get-Date;
$DaysJRsave1 = "-35";
$DaysJRsave2 = "-65";
$oldestDay1 = $curDay.AddDays($DaysJRsave1);
$oldestDay2 = $curDay.AddDays($DaysJRsave2);

## base1
$JRbase1 = "C:\Program Files\1cv8\srvinfo\reg_1541\e5bc64e9-1e27-45c6-b6f5-4283f7f69684\1Cv8Log\";
Get-ChildItem -Path $JRbase1 -Recurse -Include *.lg* | Where-Object {$_.LastWriteTime -le $oldestDay1} | Remove-Item

## base2
$JRbase2 = "C:\Program Files\1cv8\srvinfo\reg_1541\31344dba-df79-4dd4-8b96-773e2413de04\1Cv8Log\";
Get-ChildItem -Path $JRbase2 -Recurse -Include *.lg* | Where-Object {$_.LastWriteTime -le $oldestDay2} | Remove-Item

Вставляем в текстовый редактор и сохраняем в формате .ps1. После помещаем в планировщик (например - запуск каждое утро).

Нужна помощь? Администрирование серверов 1С мы осуществляем в рамках услуги администрирование серверов. Или в рамках аренды сервера 1С.