Где искать журналы сервера 1С:Предприятия и что в них смотреть

· 10 мин

Содержание

Логи сервера 1С лежат в каталоге кластера srvinfo: на Windows по умолчанию это C:\Program Files\1cv8\srvinfo, на Linux — /home/usr1cv8/.1cv8/1C/1cv8. Там хранится журнал регистрации каждой базы. Технологический журнал по умолчанию выключен: его включают файлом logcfg.xml, и пишется он туда, куда вы укажете.

Сервер упал, пользователи жалуются на «зависания», а в окне ошибки только Неисправимая ошибка или Соединение с сервером 1С:Предприятия разорвано. Чтобы найти причину, нужны правильный журнал, правильные настройки и пара команд поиска, которые достают нужную строку из гигабайтов текста.

Сразу о главном: у сервера 1С не один лог, а несколько. Поэтому сначала определите, что ищете.

Что вы хотите найти в логах?

Логи сервера 1С на Windows: каталоги и файлы

Все данные кластера живут в каталоге srvinfo. Его путь задаётся параметром -d в командной строке службы, поэтому надёжнее не угадывать, а посмотреть:

  1. Откройте services.msc.
  2. Найдите службу «Агент сервера 1С:Предприятия 8.3» (в названии может быть номер версии).
  3. В свойствах службы посмотрите поле «Исполняемый файл». Значение после -d — это и есть каталог кластера.

Типичные варианты:

Вариант установкиКаталог кластера
Установка службы штатным инсталлятором 8.3C:\Program Files\1cv8\srvinfo
Старые установки и ручная регистрация службыC:\Users\USR1CV8\AppData\Local\1C\1cv8
Перенос на отдельный диск администраторомлюбой путь из параметра -d

Что лежит внутри srvinfo

  • 📁 reg_1541 — реестр кластера. Число в имени равно порту менеджера кластера: если кластер на порту 2541, папка будет reg_2541.
  • 📄 reg_1541\1CV8Clst.lst — список баз кластера с их идентификаторами (GUID).
  • 📁 reg_1541\<GUID базы>\1Cv8Log — журнал регистрации конкретной информационной базы.
  • 📁 reg_1541\snccntx… — служебный кэш сеансов. Это не лог, читать там нечего.

Как найти папку нужной базы

Папки баз названы GUID-ами, а не именами. Откройте 1CV8Clst.lst любым текстовым редактором (только на чтение!) и найдите имя базы через поиск. Рядом с именем стоит GUID в фигурных скобках — по нему и ищите папку в reg_1541.

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

Не редактируйте и не сохраняйте 1CV8Clst.lst. Испорченный реестр кластера означает, что сервер «потеряет» базы.

Форматы журнала регистрации

В каталоге 1Cv8Log вы увидите одно из двух:

  • 🗂 1Cv8.lgd — один файл в формате SQLite. Это формат по умолчанию для баз, созданных на 8.3.
  • 🗂 1Cv8.lgf плюс набор файлов *.lgp — старый текстовый формат, разбит по периодам.

Открывать эти файлы напрямую стоит только для копирования и архива. Для просмотра есть штатные средства (о них ниже).

Где искать логи 1С на Linux-сервере

На Linux служба работает от пользователя usr1cv8, а каталог кластера по умолчанию лежит в его домашней папке:

/home/usr1cv8/.1cv8/1C/1cv8/

Внутри та же структура: reg_1541, 1CV8Clst.lst, папки баз с 1Cv8Log.

Реальный путь, как и на Windows, берите из командной строки процесса:

ps aux | grep ragent

Ищите в выводе параметр -d. Если его нет, используется путь по умолчанию.

Где файл настроек технологического журнала на Linux

Платформа ищет logcfg.xml в каталоге conf:

  • /opt/1cv8/conf/ — общий для всех установленных версий;
  • /opt/1cv8/x86_64/8.3.xx.xxxx/conf/ — для конкретной версии.

На старых сборках платформа ставилась в /opt/1C/v8.3/x86_64/, и conf нужно искать там.

Права на каталог логов

Каталог, куда пишется технологический журнал, должен принадлежать usr1cv8:

sudo mkdir -p /var/log/1c/techlog
sudo chown -R usr1cv8:grp1cv8 /var/log/1c/techlog

Если прав нет, сервер молча ничего не пишет. Это самая частая причина вопроса «настроил, а лог пустой».

Как включить технологический журнал сервера 1С

Журнал регистрации пишется всегда. Технологический журнал (ТЖ) — нет: его включают вручную, когда нужно расследовать проблему.

Куда положить logcfg.xml

На Windows файл кладут в каталог conf:

  • C:\Program Files\1cv8\conf\logcfg.xml — действует для всех версий платформы на этом компьютере;
  • C:\Program Files\1cv8\8.3.xx.xxxx\bin\conf\logcfg.xml — только для одной версии.

Перезапускать службу не нужно. Сервер перечитывает файл примерно раз в минуту. Через минуту-две в указанном каталоге появятся подпапки вида rphost_4512, rmngr_3380, ragent_2210 — значит, журнал пишется.

Шаблон 1: только ошибки

Безопасная настройка, которую можно держать включённой постоянно:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="D:\1C_Logs\errors" history="72">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <event>
      <eq property="name" value="QERR"/>
    </event>
    <property name="all"/>
  </log>
</config>
  • location — каталог журнала;
  • history — сколько часов хранить файлы, старые сервер удаляет сам;
  • <property name="all"/> — выводить все свойства события. Без этой строки записи будут почти пустыми.

Шаблон 2: медленные запросы и блокировки

Для расследования «тормозов» включайте на несколько часов, не дольше:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="D:\1C_Logs\slow" history="24">
    <event>
      <eq property="name" value="DBMSSQL"/>
      <ge property="durationus" value="1000000"/>
    </event>
    <event>
      <eq property="name" value="DBPOSTGRS"/>
      <ge property="durationus" value="1000000"/>
    </event>
    <event>
      <eq property="name" value="TTIMEOUT"/>
    </event>
    <event>
      <eq property="name" value="TDEADLOCK"/>
    </event>
    <property name="all"/>
  </log>
</config>

Фильтр durationus задан в микросекундах: 1000000 — это запросы дольше одной секунды. Для первого прохода хватит. Если записей слишком много, поднимите порог до 3–5 секунд.

Можно описать несколько элементов <log> в одном файле: ошибки в одну папку, медленные запросы в другую. У каждого <log> должен быть свой каталог.

Как выключить журнал

Удалите logcfg.xml или переименуйте его, например в logcfg.xml.off. Через минуту запись прекратится. Не оставляйте подробный ТЖ включённым «на всякий случай» — он забивает диск за часы.

Анализ логов сервера 1С: ошибки и узкие места

Как устроен файл технологического журнала

Структура каталога: location\<процесс>_<PID>\ГГММДДЧЧ.log. Каждый файл — один час работы одного процесса. Например, 26100714.log — запись за 7 октября, с 14:00 до 15:00.

Строка события выглядит так:

23:41.512006-1843002,DBMSSQL,5,process=rphost,p:processName=buh_main,Usr=Иванова,Sql='SELECT ...',Rows=12840,Context='Отчет.ОборотноСальдоваяВедомость...'

Разбор по частям:

  • 23:41.512006 — минуты и секунды внутри часа из имени файла;
  • 1843002 — длительность в микросекундах (здесь 1,84 секунды);
  • DBMSSQL — имя события;
  • Usr, p:processName, Context — кто, в какой базе и из какого места кода.

Значение одного события может занимать несколько строк: многострочный текст запроса или контекст. Учитывайте это при поиске командами.

Какие события что означают

СобытиеЧто фиксируетКогда искать
EXCPисключение в процессепадения, «Неисправимая ошибка»
QERRошибка компиляции запросаошибки в отчётах и обработках
DBMSSQL / DBPOSTGRSзапрос к MS SQL / PostgreSQLмедленные отчёты, проведение
CALL, SCALLсерверный вызовчто именно грузит рабочий процесс
TLOCKуправляемая блокировкаожидание на блокировках
TTIMEOUTпревышено время ожидания блокировкиошибка «Превышено максимальное время ожидания»
TDEADLOCKвзаимоблокировкаошибки «deadlock»
CONN, SESNсоединения и сеансыобрывы соединения

Поиск на Windows через PowerShell

Последние 20 исключений из всех процессов:

Get-ChildItem "D:\1C_Logs\errors" -Recurse -Filter *.log |
  Select-String -Pattern ",EXCP," |
  Select-Object -Last 20

Поиск по фразе из текста ошибки, которую показал пользователь:

Get-ChildItem "D:\1C_Logs\errors" -Recurse -Filter *.log |
  Select-String -Pattern "Неисправимая ошибка" -Context 0,3

Поиск на Linux через grep и awk

Самые частые описания ошибок за период хранения:

cd /var/log/1c/techlog
grep -rh ",EXCP," . | grep -o "Descr=[^,]*" | sort | uniq -c | sort -rn | head -20

Десять самых долгих запросов:

grep -rh ",DBPOSTGRS," . | awk -F'[-,]' '{print $2, $0}' | sort -rn | head -10 | cut -c1-300

Первое поле в выводе — длительность в микросекундах. Дальше смотрите Context: там модуль и строка, откуда пришёл запрос. Это и есть адрес для программиста.

Журнал регистрации: смотрим из программы

Журнал регистрации базы читают не файлом, а штатно:

  • в клиенте типовых конфигураций (БП 3.0, ЗУП 3.1, УТ 11): Администрирование → Обслуживание, ссылка «Журнал регистрации»;
  • в Конфигураторе: Администрирование → Журнал регистрации.

Отбор по пользователю, событию и интервалу сужает выборку с сотен тысяч записей до десятка. Для расследования «кто удалил документ» отбирайте по событию «Данные. Удаление» и по метаданным нужного вида документа.

Скрытые источники: дампы, события ОС, СУБД и веб-сервер

Часть причин сбоя в журналах 1С не видна. Проверьте ещё четыре места.

Дампы процессов

Дамп — снимок памяти упавшего процесса, файл .mdmp. Он нужен для обращения в поддержку или партнёру. На сервере каталог дампов задают в том же logcfg.xml:

<dump create="1" location="D:\1C_Dumps"/>

Клиентские дампы на рабочих местах Windows по умолчанию складываются в %LOCALAPPDATA%\1C\1cv8\dumps.

Журнал событий Windows

Если служба агента не стартует или падает сразу после старта, ТЖ ничего не успевает записать. Откройте eventvwr.msc → «Журналы Windows» → «Приложение» и отфильтруйте по источникам с «1C» в названии. Там же видны ошибки прав учётной записи службы.

systemd на Linux

Сначала узнайте точное имя юнита сервера:

systemctl list-units --type=service | grep -i 1c

Затем читайте его сообщения:

journalctl -u <имя_юнита> --since "1 hour ago"

Логи СУБД и веб-сервера

  • 🐘 PostgreSQL: на Debian и Ubuntu — /var/log/postgresql/; в сборках Postgres Pro журнал обычно лежит в подкаталоге log каталога данных. Там видны взаимоблокировки на уровне СУБД и нехватка места.
  • 🗄 MS SQL Server: в SSMS Management → SQL Server Logs, файлы ERRORLOG в каталоге Log экземпляра.
  • 🌐 Публикация на веб-сервере: IIS пишет в C:\inetpub\logs\LogFiles, Apache на Ubuntu — в /var/log/apache2/. Сюда смотрят, когда веб-клиент или HTTP-сервисы отвечают кодом 500.

Ротация и архивация логов сервера 1С

Технологический журнал

Ротацию делает сам сервер по атрибуту history. Файл старше заданного числа часов удаляется. Ориентиры:

  • журнал ошибок — 48–168 часов (2–7 дней);
  • журнал запросов и блокировок — 4–24 часа.

Если файлы нужны дольше, копируйте закрытые часовые файлы в архив отдельным заданием. Текущий файл часа не трогайте — в него идёт запись.

Журнал регистрации

Он растёт бесконечно, пока его не настроить. В Конфигураторе откройте Администрирование → Настройка журнала регистрации. Здесь задают:

  • 📊 уровень регистрации (ошибки, предупреждения, информация, примечания);
  • 📆 разделение журнала по периодам — для старого формата .lgp;
  • ✂️ сокращение журнала: записи до выбранной даты удаляются, и их можно сохранить в отдельный файл.

Сокращение журнала необратимо. Сначала сохраните удаляемые записи в файл — Конфигуратор предлагает это в том же окне.

Архив по расписанию на Windows

Пример скрипта PowerShell для Планировщика заданий: упаковывает файлы ТЖ старше суток в zip и удаляет исходники.

$src = "D:\1C_Logs\errors"
$dst = "E:\Archive\1C_Logs\techlog_$(Get-Date -Format yyyyMMdd).zip"
$old = Get-ChildItem $src -Recurse -Filter *.log |
  Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-1) }
if ($old) {
  Compress-Archive -Path $old.FullName -DestinationPath $dst -Update
  $old | Remove-Item
}

Проверьте скрипт ручным запуском, прежде чем ставить его в расписание.

Архив по расписанию на Linux

Строка для crontab пользователя root: каждую ночь сжимает файлы ТЖ старше суток.

30 2 * * * find /var/log/1c/techlog -name "*.log" -mmin +1440 -exec gzip {} \;

Ошибки при настройке логов 1С

Каждая из них стоит часов поиска, а исправляется за минуту.

  • ❌ Общий каталог для ТЖ. Сервер удаляет устаревшие файлы в каталоге location. Укажете папку, где лежат другие данные, — рискуете их потерять. Под журнал всегда заводите отдельный пустой каталог.
  • ❌ ТЖ на системном диске без фильтров. Запись всех событий подряд даёт гигабайты в час. Когда диск C: заполнится, остановится не только 1С.
  • ❌ Файл сохранён не в UTF-8. Если в пути есть кириллица, а Блокнот сохранил файл в ANSI, сервер его не прочитает. Сохраняйте logcfg.xml в UTF-8 и пишите пути латиницей.
  • ❌ Ошибка в XML. Одна незакрытая кавычка — и журнал не пишется без всяких сообщений. Проверьте файл, открыв его в браузере: тот покажет строку с ошибкой.
  • ❌ logcfg.xml не в той папке. Файл в bin вместо bin\conf или в каталоге другой версии платформы игнорируется.
  • ❌ Журнал регистрации чистят вручную. Файл 1Cv8.lgd при работающем сервере занят процессом, а удаление файлов *.lgp вслепую оставляет дыры в истории. Чистите журнал через «Сократить». Если файл всё же нужно перенести, делайте это при остановленной службе в нерабочее время: сеансы всех пользователей прервутся.
Как понять, что технологический журнал реально пишется?
Через 1–2 минуты после сохранения logcfg.xml в каталоге location появятся папки rphost_PID и rmngr_PID с файлами .log. Нет папок — проверьте права, кодировку и путь к conf.
Влияет ли технологический журнал на скорость сервера?
Журнал только ошибок нагрузку почти не добавляет. Запись всех запросов без фильтра по длительности заметно грузит диск и процессор, поэтому её включают на короткое время.
Где журнал регистрации у файловой базы?
В каталоге самой базы, в подпапке 1Cv8Log рядом с файлом 1Cv8.1CD. Сервер 1С для файловой базы не используется.
Можно ли читать журнал регистрации без запуска 1С?
Файл .lgd — база SQLite, её открывает любой просмотрщик SQLite. Но ссылки на пользователей и метаданные там хранятся кодами, поэтому для расследований удобнее штатный просмотр.
Почему в логе время не совпадает с жалобой пользователя?
Время в ТЖ берётся с часов сервера, а час — из имени файла. Если сервер и рабочие места в разных часовых поясах или часы рассинхронизированы, делайте поправку.