В этом уроке мы научимся использовать обновлятор для однократного (или регулярного по расписанию) сокращения журнала регистрации в одной или группе баз.
При этом я покажу как сохранять и архивировать сокращаемую часть журнала на отдельный диск.
Содержание
- Пакетные скрипты
- Оговорка
- Простейший вариант скрипта
- Добавляем сохранение удаляемой части в архив
- Сжимаем сокращаемую часть архиватором
- Всегда сокращаем журнал на текущую дату
- Удаляем неиспользуемые страницы из журнала регистрации
- Михаил Сайко
- Где в 1С находится журнал регистрации ошибок?
- Как открыть журнал регистрации?
- Как отключить журнал регистрации?
- Как выгрузить журнал регистрации?
- Как восстановить журнал регистрации?
- Как сократить журнал регистрации?
- Как очистить журнал регистрации?
- Можно ли программно добавить запись в журнал?
- Как вернуть старый формат журнала регистрации?
- Можно ли перенести журнал регистрации в отдельную базу?
- Рекомендуем к прочтению
Пакетные скрипты
Все операции мы будем проводить на закладке обновлятора "Скрипты":
Если вы ещё не работали с пакетными скриптами в обновляторе, советую бегло пробежаться по их возможностям: ссылка.
Оговорка
Всю следующую практическую часть мы будем делать на примере одной базы и запускать этот скрипт вручную.
Но в реальных задачах ничего не помешает нам запускать скрипт для любого количества баз (в том числе параллельно) и сохранять этот скрипт в расписание с уведомлением на почту — обо всё этом здесь.
Простейший вариант скрипта
За сокращение журнала регистрации (для любых типов баз: файловых и серверных) отвечает ключ ReduceEventLogSize в пакетном режиме конфигуратора.
В качестве параметра он принимает новую (левую) границу журнала регистрации в формате ГГГГ-ММ-ДД.
И если мы, например, хотим сократить все записи в журнале регистрации до 1 января 2018 года, то простейший вариант скрипта будет таким:
Добавляем сохранение удаляемой части в архив
Но этого мало. Мы хотим не просто сокращать журнал регистрации (который обычно занимает непростительно много места на системном диске), но ещё и сохранять сокращаемую часть на другом диске (и желательно в сжатом архиватором виде). Чтобы в случае чего к ней можно было обратиться через меню "Файл-Открыть " в конфигураторе.
Предположим, что общим местом хранения архивов журналов регистрации (для всех баз) является папка "x:Backups1CEventLogs".
Этот путь уже должен существовать.
Модифицируем наш скрипт, чтобы сокращаемая часть писалась в эту папку с правильным именем:
Сжимаем сокращаемую часть архиватором
Для этого файл выгрузки сокращаемой части упакуем архиватором 7z (он идёт вместе с обновлятором), а затем удалим сам файл.
Скрипт будет таким:
Всегда сокращаем журнал на текущую дату
У нас получился универсальный скрипт, который уже можно выполнять для группы баз и ставить в планировщик.
Если бы не дата, которая жёстко прописана в скрипте, что делает бессмысленным многократный запуск этого скрипта в неизменном виде.
Давайте изменим скрипт так, чтобы при его запуске всегда подставлялась текущая дата. Это позволит нам поставить скрипт в планировщик на запуск, скажем раз в месяц, и забыть о ручном сокращении журнала регистрации раз и навсегда.
Задача получить текущую дату в скрипте в формате ГГГГ-ММ-ДД не такая простая, если рассматривать универсальное решение для всех случаев жизни.
Но для случая, когда представление даты на компьютере имеет вид ДД.ММ.ГГГГ (обычно это так по умолчанию), вытащить нужные числа и поставить их в нужном порядке можно вот так:
Обратите внимание, что мы здесь просто вытаскиваем по индексу и длине нужные части из даты, которая первоначально имеет вид ДД.ММ.ГГГГ, то есть переводим строку в формате ДД.ММ.ГГГГ в формат ГГГГ-ММ-ДД.
В итоге получим вот такой скрипт:
Удаляем неиспользуемые страницы из журнала регистрации
Вы удивитесь, но несмотря на все вышеописанные процедуры, размер файла в котором журнал физически хранится в формате sqllite не уменьшится совершенно.
То есть если он был 10 гигабайт до процедуры сокращения записей, то 10 гигабайт и останется.
Всё дело в том, что, после удаления записей из журнала регистрации, физически данные с диска не удаляются, а лишь помечаются как удаленные. Это сделано для повышения производительности.
За сжатие журнала регистрации отвечает команда Vacuum, она позволяет удалить все неиспользуемые страницы и дефрагментировать данные.
Выполнение этой команды требует остановки сервера 1с (если речь о серверной базе), чтобы получить монопольный доступ к файлу журнала регистрации.
Поэтому я рекомендую сделать эту операцию (если файл журнала регистрации уже сейчас очень сильно вырос) один раз и в дальнейшем регулярно выполнять сокращение через ключ конфигуратора ReduceEventLogSize (мы его рассмотрели выше). Это позволит удерживать размер журнала регистрации примерно на одном уровне.
Подготовительные работы
Для выполнения команды Vacuum нам понадобится утилита sqlite3, которую можно скачать с официально сайта: http://www.sqlite.org/download.html
Качаем и распаковываем вот этот пункт:
Там 3 утилиты, из которых нам нужна sqlite3.exe.
Альтернативное место для скачивания этой же утилиты — мой сайт (я подписал её своей электронной подписью).
Распакуем эту утилиту, например, в папку "x:work" и соответственно будем обращаться к ней из скриптов как "x:worksqlite3.exe".
Vacuum для файловых баз
Для файловых баз выполним команду Vacuum через новый пакетный скрипт обновлятора, полагая что журнал регистрации хранится в папке с базой в "1Cv8Log1Cv8.lgd".
Ещё раз напомню, что команду Vacuum имеет смысл выполнять уже после сокращения журнала регистрации при помощи описанного выше ключа конфигуратора ReduceEventLogSize.
Vacuum для серверных баз
С серверными базами всё несколько сложнее, в том смысле что полной автоматизации выполнения команды Vacuum для избранных баз простым пакетным скриптом не достичь.
Не достичь хотя бы потому, что невозможно автоматически определять путь к журналу регистрации серверной базы. Это нужно делать разбором файла настроек сервера 1с (1CV8Clst.lst), который тоже ещё надо правильно обнаружить. Все эти возможности выходят за рамки пакетного скрипта.
Но так как мы изначально планируем сделать Vacuum только после первого сокращения журнала регистрации, то полной автоматизации нам здесь и не надо.
Я опишу лишь примерный порядок действий:
1. Находим папку с настройками кластера 1с. Обычно это что-то типа: "c:Program Files1cv8srvinfo
eg_1541".
2. В ней подпапки — на каждую базу своя. В каждой из этих подпапок есть папка 1Cv8Log с нужным нам 1Cv8.lgd, на который и нужно направить команду Vacuum.
Например, так (указанный внутри скрипт пишется и запускается в командном файле vacuum.cmd без обновлятора):
Перед его выполнением нужно остановить службу сервера 1с.
А что если нам требуется определить какой папке соответствует какая база? Для этого открываем файл 1CV8Clst.lst в корне reg_1541 и из него находим, что, например, папке 0deaa216-26dd-4ae0-9483-51a85b38c093 соответствует база test:
То есть мы можем выполнить vacuum как для всех баз на сервере, так и для избранных.
На этом всё
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю). |
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Михаил Сайко
Если вы должны обеспечивать работоспособность системы 1С с большим количеством пользователей, то часто возникают ситуации, когда необходимо проверить их действия. Именно для этого разработчики и создали отличный механизм – журнал регистрации. Он позволит узнать, кем вносились изменения в документы и другие объекты системы, кто получал сообщение об ошибках, запускал отчеты.
Где в 1С находится журнал регистрации ошибок?
Отследить, какие ошибки появлялись у пользователей в процессе работы, можно несколькими способами. Чаще всего проще и быстрее открыть меню «Администрирование», зайти в пункт «Обслуживание» и нажать «Журнал регистрации»:
Также в журнал регистрации попадете, воспользовавшись общим меню под названием «Все функции»:
Кроме этого, запустить журнал можно и из конфигуратора. Для этого откройте вкладку меню «Администрирование» и выберите пункт «Журнал регистрации»:
Местонахождение данных журнала отличается для случаев файловых и клиент-серверных баз. В первом случае файлы журнала регистрации расположены в папке с базой в отдельном каталоге «1Cv8Log». Если реализованы сервер и клиентские места, то история ошибок и действия пользователей находиться на сервере в отдельной папке.
Как открыть журнал регистрации?
Чтобы открыть данные по истории действий пользователей и ошибок необходимо зайти в журнал регистрации любым способом и установить отборы. Проблема в том, что при большом количестве пользователей журнал регистрации становится внушительного размера и 1С показывает лишь несколько последних записей. Чтобы увидеть больший список данных – необходимо выставить нужные фильтры.
В открывшейся форме вы сможете установить те отборы по данным журнала регистрации, которые необходимы. Сверху задается интервал поиска, если необходимо учесть, когда были зафиксированы действия пользователей или ошибки. Слева вы отмечаете, события какой важности вас интересуют, а справа можно установить отборы:
- Тип события;
- Пользователя, под которым произошло действие или ошибка;
- Приложение;
- Компьютеры;
- Перечень сеансов.
В разделе «Данные» можно установить отборы на конкретные объекты системы от всего списка документов, до поиска по единственному элементу справочника. Раздел «Транзакция» позволит отследить только записанные операции или еще не завершенные. Раздел «Прочие» предоставляет возможность поиска по различным серверам или IP портам.
Как отключить журнал регистрации?
Многие компании, не располагающие мощными серверами и нежелающие тратить деньги на аренду оборудования, отключают журнал регистрации в 1С. Это чревато тем, что в случае ошибок вы не сможете посмотреть, когда и у кого они появлялись. Но журнал регистрации требует много ресурсов, поэтому иногда, действительно, целесообразно отказаться от этого механизма. К тому же, механизм версионирования объектов частично выполняет функции журнала регистрации, позволяя увидеть внесенные изменения в объекты системы.
Для того чтобы отключить журнал регистрации, необходимо сделать для администратора монопольный режим и зайти в конфигуратор. В выпадающем меню откройте вкладку «Администрирование» и откройте «Настройка журнала регистрации…».
После выбора пункта «Не регистрировать» и подтверждения своего выбора нажатием кнопки «ОК», запись всех событий в журнал регистрации остановится.
Как выгрузить журнал регистрации?
Так как данный механизм требует больших ресурсов, многие администраторы предпочитают работать с историей не через 1С, а в другом формате. Это позволяет не нагружать сервер, и клиентский компьютер при этом также работает существенно быстрее. Чтобы осуществить просмотр журнала регистрации, необходимо сформировать отчет с нужными данными в 1С. Затем нажмите «Еще/Вывести список…», выделите все столбцы и сохраните полученные данные в файл с нужным форматом с помощью клавиш Ctrl+А.
Также в 1С встроена функция «ВыгрузитьЖурналРегистрации()», которой можно воспользоваться во внешних обработках, чтобы выгружать себе определенные данные. Анализировать выгруженные данные может помочь типовая обработка «Консоль анализа журнала регистрации». Она распространяется на диске ИТС, который вы получаете, когда заключаете договор с партнерами компании 1С. Если же нет доступа к этим дискам, то на помощь может прийти интернет и официальный сайт ИТС.
Как восстановить журнал регистрации?
Бывают случаи, когда при переносе информационной базы или обновлении сервера журнал регистрации оказывается пустым. Если вам не повезло, и журнал некорректно работает, то придется заниматься восстановлением данных. В первую очередь проверьте сами файлы журнала регистрации. Если говорить о клиент-серверном варианте, то они хранятся на сервере в каталоге:
Зачастую достаточно бывает переноса содержимого этой папки в каталог с новым расположением ИБ, чтобы журнал регистрации восстановился. Если же это не помогло, то придется обращаться к архиву логов или стороннему ПО для восстановления данных журнала регистрации. Перед тем как запускать обработки на рабочей базе, обязательно потренируйтесь на копии ИБ.
Очень часто подобные проблемы появляются после неаккуратных попыток уменьшить размер файлов журнала регистрации.
Как сократить журнал регистрации?
По мере работы в 1С данные журнала регистрации становятся все больше. Если вы обладаете ограниченными ресурсами, то уже через пару лет вы столкнетесь с нехваткой места на диске. Уменьшить размер истории ошибок и действий пользователя – естественный шаг для экономии места и оптимизации работы базы. Для этого нам понадобиться режим конфигуратора.
Необходимо открыть форму «Настройка журнала регистрации…» из меню «Администрирование»:
В сокращении журнала регистрации нам помогут 2 функции:
- Кнопкой «Сократить» удаляем все данные до определенной даты;
- Возможность выбора периодов разделения журнала. При установке данной опции в значение «День», каждый день будет создаваться новый файл журнала регистрации. Мы сможем устаревшие данные перемещать на отдельный ресурс. Также не лишним будет применить архивирование журнала в zip или rar для минимизации занимаемого места.
Как очистить журнал регистрации?
Многие администраторы периодически чистят журнал регистрации. Это оправданно, если вам нужно удалить старые записи или в данных по истории действий в базе нет необходимости. Выше был рассмотрен способ очистки журнала до определенной даты – с помощью кнопки «Сократить», используя конфигуратор. Но это не единственная возможность у администратора, чтобы очистить избавиться от ненужных данных журнала регистрации.
Логи 1С хранятся в папке 1Cv8Log в каталоге расположения информационной базы. Чтобы очистить журнал регистрации достаточно просто удалить данную директорию вместе с содержимым. Это освободит немало места на жестком диске, но рекомендуется произвести архивирование журнала и переместить данные в другое место.
Можно ли программно добавить запись в журнал?
Многие администраторы и разработчики активно используют журнал регистрации не только для отслеживания ошибок и действий пользователя. Встроенный функционал внутреннего языка 1С позволяет им программно записывать свои события в журнал регистрации. Для этого используется функция «ЗаписьЖурналаРегистрации()» с набором параметров.
Таким образом, у каждого программиста есть возможность записывать собственные события в стандартный журнал регистрации. Эта возможность дает обширный простор для различных контролей и отслеживания работы пользователей. Особенно это актуально, если у вас настроено большое количество фоновых заданий, за которыми некогда следить.
Как вернуть старый формат журнала регистрации?
Начиная с версии 8.3.5, в 1С появляется новый формат данного механизма. Если вы создадите базу на основе платформы версии 8.3.5 и выше, то увидите в папке 1Cv8Log файл формата lgd. Пользователями уже замечено, что при большом количестве пользователей новый журнал регистрации работает существенно хуже. Поэтому многие администраторы заинтересованы в том, чтобы вернуть старый формат журнала регистрации.
Чтобы снова увидеть файл формата lgf, нужно для каждой базы 1С проделать следующий алгоритм:
- Найдите папку 1Cv8Log для конкретной базы;
- Удалите из каталога все файлы. Желательно сохранить их в другом месте;
- Создайте в папке 1Cv8Log пустой файл формата 1Cv8.lgf.
Вышеперечисленный алгоритм проделайте для каждой информационной базы.
Можно ли перенести журнал регистрации в отдельную базу?
Если вам пришлось переносить информационную базу на другой сервер, то необходимо не забыть и о журнале регистрации. Если на него не обращать внимания, то при просмотре вы обнаружите, что данные невозможно прочитать и придется журнал очищать.
Процедура переноса журнала отличается при файловом и клиент-серверном варианте информационной базы. В первом случае вам достаточно лишь найти в старом каталоге базы папку 1Cv9Log и скопировать ее в новую директорию базы.
Второй случай сложнее, так как потребуется исправлять идентификатор ИБ. Для этого откройте файл 1Cv8Reg, расположенный на сервере, и найдите в нем строчку с указание ID – источника ИБ. Зайдите в каталог этой ИБ и перенесите оттуда в новую директорию папку 1Cv8Log. Также следует внести изменения в адреса сервера, если базу перенесли.
Если у вас возникли сложности с переносом журнала, обратитесь к нашим специалистам. Мы с радостью проконсультируем вас, подскажем, сколько стоит доработка 1С, или, ориентируясь на ваши индивидуальные задачи, подберем оптимальный тариф сопровождения.
Данная статья будет важна для получения ответов на вопросы:
- Как удалить «устаревшие» записи журнал регистрации?
- Как сократить журнал регистрации?
- Как уменьшить размер файла 1Cv8.lgd?
- События журнала удалились, но файл lgd не уменьшился. Почему?
- Можно ли автоматически сокращать журнал регистрации по расписанию?
Начиная с версии 8.3.5 в программах 1С Предприятие 8 появилась возможность использования СУБД SQLite для хранения журанала регистрации.
Особенностью нового формата хранения данных журнала (в lgd-файле) является процедура его сокращения. Для освобождения свободного дискового пространства теперь недостаточно выполнить процедуру удаления «устаревших» событий журнала. Потребуется очистить файл данных от пустых страниц командой VACUUM, выполнить которую можно посредством утилиты SQLITE.EXE, например:
sqlite.exe vacuum
Важно! Удаление данных журнала регистрации по-прежнему может быть выполнено средствами конфигуратора, в том числе, используя параметр /ReduceEventLogSize.
Личное общение — наиболее эффективный способ коммуникаций
Воспользуйтесь формой обратного вызова и мы перезвоним Вам