Где искать журналы сервера 1С:Предприятия и что в них смотреть
Содержание
Логи сервера 1С лежат в каталоге кластера srvinfo: на Windows по умолчанию это C:\Program Files\1cv8\srvinfo, на Linux — /home/usr1cv8/.1cv8/1C/1cv8. Там хранится журнал регистрации каждой базы. Технологический журнал по умолчанию выключен: его включают файлом logcfg.xml, и пишется он туда, куда вы укажете.
Сервер упал, пользователи жалуются на «зависания», а в окне ошибки только Неисправимая ошибка или Соединение с сервером 1С:Предприятия разорвано. Чтобы найти причину, нужны правильный журнал, правильные настройки и пара команд поиска, которые достают нужную строку из гигабайтов текста.
Сразу о главном: у сервера 1С не один лог, а несколько. Поэтому сначала определите, что ищете.
1Cv8Log внутри srvinfo или просмотр из самой программы.journalctl на Linux: до логов 1С дело ещё не дошло.Логи сервера 1С на Windows: каталоги и файлы
Все данные кластера живут в каталоге srvinfo. Его путь задаётся параметром -d в командной строке службы, поэтому надёжнее не угадывать, а посмотреть:
- Откройте
services.msc. - Найдите службу «Агент сервера 1С:Предприятия 8.3» (в названии может быть номер версии).
- В свойствах службы посмотрите поле «Исполняемый файл». Значение после
-d— это и есть каталог кластера.
Типичные варианты:
| Вариант установки | Каталог кластера |
|---|---|
| Установка службы штатным инсталлятором 8.3 | C:\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вслепую оставляет дыры в истории. Чистите журнал через «Сократить». Если файл всё же нужно перенести, делайте это при остановленной службе в нерабочее время: сеансы всех пользователей прервутся.