Файл 1Cv8.lgd: как прочитать журнал регистрации без 1С
Содержание
Файл 1Cv8.lgd лежит в каталоге 1Cv8Log рядом с файловой базой. Двойной щелчок ничего не даёт, Windows предлагает выбрать программу. Открывать его нужно либо самой 1С (пункт «Журнал регистрации» в администрировании), либо любым просмотрщиком SQLite: внутри обычная база SQLite.
Типичная ситуация: сервер упал ночью, базу уже подняли, а директор спрашивает, кто и когда удалил документ. Или файл базы скопировали на другой компьютер, 1С там нет, а в журнале нужна одна запись. Ниже — все рабочие способы от простого к тому, что требует чуть больше возни.
Что внутри LGD и откуда он взялся
Раньше журнал хранился в текстовом формате: файл 1Cv8.lgf (справочники кодов) и набор *.lgp (сами события). Новые версии платформы 8.3 умеют вести журнал в формате lgd. Это одна SQLite-база, в которой записи лежат в таблицах.
Что это даёт на практике:
- 🗂 один файл вместо десятков
lgp; - ⚡ запросы по дате, пользователю и событию работают быстрее, чем перебор текстовых файлов;
- 🔓 прочитать его можно сторонним инструментом, не запуская 1С.
Где искать файл:
| Тип базы | Где лежит журнал |
|---|---|
| Файловая | папка 1Cv8Log внутри каталога базы, рядом с 1Cv8.1CD |
| Клиент-серверная | каталог кластера на сервере: reg_<порт>\<идентификатор базы>\1Cv8Log |
Если в 1Cv8Log вместо lgd лежат lgf и lgp, база ведёт журнал в старом формате. Эти файлы текстовые, но открывать их руками — занятие на любителя: коды пользователей и событий хранятся отдельно.
Не копируйте 1Cv8.lgd в рабочую папку, пока 1С пишет в него события. Скопируйте файл целиком (вместе с файлами -wal и -shm, если они есть) или сначала остановите работу с базой, иначе получите неполную копию.
Штатный способ: смотреть журнал из самой 1С
Если доступ к базе есть, ничего больше не нужно. Платформа сама читает и lgd, и lgp.
- Запустите базу в режиме «Предприятие» под пользователем с правом просмотра журнала (обычно это администратор).
- Откройте раздел «Администрирование» и найдите пункт «Журнал регистрации». Если интерфейс другой, наберите «Журнал регистрации» в поиске по командам.
- Задайте отбор: интервал дат, пользователь, событие, уровень (ошибка, предупреждение, информация).
- Нажмите «Показать» или «Обновить» и откройте нужную строку двойным щелчком — в карточке видны данные, представление и подробный комментарий.
Хороший приём: сначала отберите только уровень «Ошибка» и узкий интервал около сбоя. Журнал за месяц на загруженной базе содержит миллионы строк, и без отбора форма будет долго строиться.
Открыть чужой журнал в своей базе
Бывает, что на руках только копия каталога 1Cv8Log от другой базы. Штатно подключить её к своей базе нельзя: журнал привязан к информационной базе. Здесь и нужны внешние инструменты из следующих разделов.
Открываем LGD как SQLite-базу
Раз формат — SQLite, подойдёт любой просмотрщик. Самый частый выбор — бесплатный DB Browser for SQLite. Подходят также DBeaver, SQLiteStudio и консольный sqlite3.
Порядок работы:
- Сделайте копию
1Cv8.lgdи работайте только с копией. - В программе выберите «Открыть базу данных» и укажите копию. Для безопасности включите режим «только чтение», если он есть.
- Перейдите на вкладку со списком таблиц.
Основные таблицы, которые вам понадобятся:
| Таблица | Что хранит |
|---|---|
EventLog | сами события: дата, уровень, сеанс, комментарий, данные |
UserCodes | справочник пользователей (код → имя) |
ComputerCodes | справочник компьютеров |
AppCodes | справочник приложений (тонкий клиент, фоновое задание и т. д.) |
EventCodes | справочник названий событий |
MetadataCodes | справочник объектов метаданных |
В EventLog пользователь, компьютер и событие записаны числовыми кодами. Чтобы получить читаемый результат, таблицы нужно соединять.
Пример запроса
Последние 50 ошибок с именем пользователя и названием события:
SELECT e.rowID,
e.date,
u.name AS user_name,
c.name AS computer,
ev.name AS event_name,
e.comment
FROM EventLog e
LEFT JOIN UserCodes u ON u.code = e.userCode
LEFT JOIN ComputerCodes c ON c.code = e.computerCode
LEFT JOIN EventCodes ev ON ev.code = e.eventCode
WHERE e.severity = 4
ORDER BY e.rowID DESC
LIMIT 50;
Значение уровня (severity) и точные имена колонок могут отличаться в разных релизах платформы. Если запрос ругается на колонку, откройте структуру EventLog во вкладке со схемой и подставьте реальные имена.
Дата в EventLog хранится числом, а не привычной строкой. В выгрузках платформы это обычно количество долей секунды от начала нашей эры. Не пугайтесь «странных» значений: для отбора по периоду проще сначала найти нужные rowID вручную, а потом работать по ним.
Не выполняйте в журнале UPDATE, DELETE и VACUUM на рабочем файле. Платформа может перестать его читать, а для разбора инцидента журнал нужен целым.
Выгрузка в XML и «читаемый» вид
Если в базе настроен просмотр, но искать в нём неудобно, выгрузите нужный срез и откройте в редакторе или Excel.
- В форме журнала задайте отбор.
- Используйте команду выгрузки журнала в файл (меню «Все действия» или кнопка в командной панели формы, название зависит от релиза).
- Выберите формат: XML или текстовый.
- Откройте результат в любом редакторе: Notepad++, VS Code, Excel.
Выгрузка по отбору — самый безболезненный способ передать журнал разработчику или администратору. Файл получается небольшим, в нём нет лишних событий.
Есть и вариант для командной строки: утилита ibcmd из состава платформы умеет работать с журналом регистрации на уровне базы. Набор ключей зависит от версии платформы, поэтому уточните его справкой ibcmd --help или в документации к вашему релизу.
Сторонние программы и просмотр старых LGP
Для формата lgd хватает SQLite-просмотрщика. Для старого lgf/lgp пригодятся специальные утилиты. Самая известная — LogReader (Log Reader): она читает оба формата и умеет переводить журнал в SQL-базу или в удобный список.
Что умеет такая программа:
- 🔍 фильтровать по любому полю и сохранять наборы отборов;
- 📤 выгружать в таблицу, в SQL, в XML;
- 📊 строить статистику по пользователям и событиям.
Возможности и условия лицензии зависят от конкретной сборки и версии. Проверяйте, что скачиваете программу с сайта разработчика: журнал содержит имена пользователей и данные о доступе, и отдавать его неизвестной утилите нежелательно.
Чистый текстовый редактор или HEX-просмотрщик для lgd не подойдёт. Файл бинарный, а название таблиц и колонок вы увидите, но данные в строках разобрать вручную нереально. Редактор годится лишь для старых lgp, и то чтобы убедиться, что файл не пуст.
Что искать в журнале, когда файл уже открыт
Открыть файл — половина дела. Дальше нужно понять, какие записи относятся к вашему случаю. Несколько типовых задач и подход к каждой.
Кто удалил или изменил документ
Отберите события по данным: «Данные. Удаление» и «Данные. Изменение», затем сузьте по интервалу и объекту метаданных. В карточке записи видно пользователя, компьютер и представление объекта. Если пользователь работал через общую учётную запись, виновного по журналу не найти, поэтому у каждого сотрудника должен быть свой вход.
Почему сеанс завершился с ошибкой
Найдите время сбоя в сообщении пользователя и возьмите запас в 10 минут в обе стороны. Отбор по уровню «Ошибка» и по номеру сеанса обычно оставляет десяток строк. Нужная — та, где в комментарии стоит текст исключения. Его же можно искать поиском по подстроке в запросе: WHERE e.comment LIKE '%блокировк%'.
Кто и когда заходил в базу
События аутентификации и начала сеанса показывают вход, приложение и компьютер. Для проверки подозрительного доступа отберите вход вне рабочего времени и сравните имя компьютера со списком штатных рабочих мест.
Сколько места занимает журнал и что в нём лишнее
Посчитайте записи по событиям:
SELECT ev.name, COUNT(*) AS cnt
FROM EventLog e
JOIN EventCodes ev ON ev.code = e.eventCode
GROUP BY ev.name
ORDER BY cnt DESC
LIMIT 20;
Если первые строки — массовые информационные события, смело снижайте уровень записи для этих типов. Журнал станет компактнее, а открываться будет быстрее.
Настройка журнала: чтобы потом было что читать
Сначала простая проверка: сколько файл занимает и за какой период хранит. Большой lgd на несколько гигабайт открывается медленно в любом инструменте.
Что стоит настроить:
- ✅ Уровень событий. Не нужно писать все «информационные» записи по каждому проведению, если достаточно ошибок и входов в систему.
- ✅ Период хранения. Старые записи лучше раз в месяц выгружать в архив и очищать, чтобы файл не рос бесконечно.
- ✅ Разделение по времени. Для больших баз разумно хранить журнал отдельными периодами.
- ✅ Место на диске. Журнал на системном разделе рядом с базой может съесть всё свободное место.
Параметры ведения журнала для файловой базы находятся в настройках самой базы (раздел администрирования, пункт про журнал регистрации). Для клиент-серверной базы часть параметров задаётся на уровне кластера, ими занимается администратор сервера.
Прежде чем чистить или переносить журнал, сделайте копию. Это единственное место, где остаётся история входов, удалений и ошибок.
Короткий чек-лист перед разбором инцидента
Какой способ выбрать и что делать, если файл не открывается
Подсказка по ситуации:
Типичные сбои при открытии
Главные причины и решения:
| Симптом | Причина | Что делать |
|---|---|---|
database is locked | файл занят работающей 1С или резервным копированием | работайте с копией, остановите процесс, который держит файл |
file is not a database | в 1Cv8Log лежит lgp или повреждённый файл | проверьте расширение, сравните размер с соседними файлами |
В EventLog нет свежих записей | запись идёт в -wal и не сброшена в основной файл | копируйте файл вместе с -wal и -shm |
| Таблицы есть, но пустые | журнал недавно очищали или включён другой уровень | проверьте период хранения и настройки уровня |
| Форма журнала в 1С строится очень долго | нет отбора, файл огромный | сузьте даты, добавьте отбор по пользователю |
| Кракозябры в комментариях | неверная кодировка просмотрщика | выберите UTF-8, у старых просмотрщиков проверьте настройки |
Если журнал повреждён (после сбоя питания, аварийного отключения), SQLite-утилиты часто могут вытащить часть данных командой .recover в sqlite3. Делайте это только на копии.
Частые вопросы
Можно ли открыть lgd в Excel напрямую?
Чем lgd отличается от lgf и lgp?
lgf и lgp — старый формат: справочник и файлы событий. lgd — один файл-база SQLite. Платформа читает оба формата.