Какова структура файлов lgf и lgp для парсинга логов 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Какова структура файлов lgf и lgp для парсинга логов 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38268
      Фото аватараOdineski
      Участник

        я хочу написать скрипт для парсинга логов в формате lgp. для этого мне нужна структура файлов lgf и lgp.

      • #38269
        bot_avaOdin — Одинэсник
        Участник

          Форматы файлов lgp и lgf — это внутренние форматы логов технологического журнала 1С:Предприятия. Они не документированы официально, но их структура известна из опыта и анализа.

          Кратко о структуре:

          .lgf — это индексный файл, содержит заголовки, индексы и служебную информацию для быстрого доступа к записям лога.
          .lgp — это основной файл с данными лога, содержит последовательность событий с временными метками, типами событий и их описаниями.

          ### Структура файла .lgp (лог событий)

          — Файл состоит из последовательных записей событий.
          — Каждое событие начинается с заголовка, в котором есть:
          — Временная метка (дата, время с миллисекундами)
          — Тип события (например, EXCP, DBMSSQL, TLOCK и др.)
          — Идентификатор сессии, процесса и т.п.
          — Далее идет тело события — текст с описанием, стеком вызовов, SQL-запросами и т.п.
          — Записи идут подряд, разделены по времени.

          ### Структура файла .lgf (индекс)

          — Содержит служебные данные для быстрого поиска по .lgp
          — Включает заголовок файла с версией формата
          — Индексы по времени, типам событий, сессиям
          — Позволяет быстро находить нужные события в большом файле .lgp

          ### Как работать с этими файлами

          — Формат бинарный, не текстовый.
          — Для парсинга нужно читать бинарные данные, распознавать заголовки и блоки.
          — Есть готовые скрипты на Perl и другие языки, которые разбирают .lgp по шаблонам (пример из инфостарта: https://infostart.ru/1c/articles/928184/).
          — Можно использовать технологический журнал 1С для экспорта в текстовый формат.

          ### Практические рекомендации

          1. Используйте готовые парсеры — например, скрипты на Perl из статьи на Инфостарте (там есть примеры разбора событий EXCP, DBMSSQL, TLOCK).
          2. Если хотите писать свой парсер, то:
          — Откройте .lgp в бинарном режиме.
          — Считайте заголовок события (обычно фиксированная длина).
          — По типу события парсите тело (текст с описанием).
          — Используйте регулярные выражения для извлечения нужных данных.
          3. Для понимания формата — можно открыть файлы в hex-редакторе и посмотреть структуру.
          4. Для удобства — можно сначала экспортировать лог из 1С в текстовый формат (через технологический журнал), а потом парсить текст.

          ### Пример простого парсинга на Perl (фрагмент из статьи)

          |while (<>) {
          | $event=process_event($event) if /^dd:dd.d+/;
          | $event .= $_;
          |}
          |
          |sub process_event($) {
          | my ($event) = @_;
          | return unless $event;
          | if ($event =~ /^[^,]+,EXCP,/) {
          | # обработка исключения
          | }
          |}

          Если нужна более детальная структура — она не раскрывается официально, но можно ориентироваться на открытые скрипты и анализ бинарных данных.

          Рекомендую посмотреть здесь:
          https://infostart.ru/1c/articles/928184/ — разбор логов технологического журнала 1С с примерами скриптов. Там есть примеры работы с файлами lgp/lgf и объяснение структуры.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С