Логирование (журналы событий) TesLab
TesLab ведёт журналирование ключевых событий системы: входящие запросы (чтение/добавление/изменение), ошибки (по HTTP-статусам и общий журнал), обновления, выполнение плановых задач (cron), а также логи отдельных модулей. Эти журналы помогают быстро диагностировать проблемы, подтверждать действия пользователей и разбирать инциденты.
Где находятся логи
Обычно логи находятся в папке:
/opt/TesLab/server/logs
Внутри расположены файлы *.log, а также папка db с журналами изменений базы данных (см. ниже).
Просмотр логов через интерфейс TesLab
Помимо доступа на сервере, логи можно открыть из клиентской части TesLab:
- Компания → Конфигурация → вкладка Логи
Вкладка предназначена для оперативной диагностики без подключения к серверу: можно быстро посмотреть нужные журналы и передать информацию в поддержку.
Безопасность
- Ограничение доступа к логам: файлы логов находятся на сервере TesLab и защищены правами файловой системы. Доступ на чтение/выгрузку и тем более на изменение файлов логов имеет только администратор сервера (либо уполномоченный персонал, которому администратор выдал права на уровне ОС). Внешние пользователи и сотрудники без административного доступа к серверу не могут самостоятельно изменять файлы логов.
-
Маскирование чувствительных данных: из соображений безопасности TesLab не сохраняет в логах
передаваемые пароли, токены и другие чувствительные значения - они автоматически
маскируются и записываются как
********. - Перед передачей логов третьим лицам убедитесь, что вы соблюдаете требования вашей организации по защите данных.
IN.log - журнал всех входящих запросов
IN.log фиксирует все запросы к TesLab (на чтение, добавление, изменение) в следующем формате:
2026-01-04 09:30:29 uid: 100 laboratory/tasks/list
{"startRow":0,"endRow":30,"pivotMode":false,"tab":"WorkingList","sortModel":[{"sort":"desc","colId":"id"}]}
Расшифровка записи:
- Дата и время события
- ID пользователя (uid)
- Вызываемый метод (например,
laboratory/tasks/list) - JSON-объект - параметры, которые были отправлены в запросе
Когда полезно: восстановить последовательность действий пользователя, понять какие параметры передавались, проверить, “доходил ли” запрос до сервера.
Логи ошибок по статусам: Error.400.log / 401 / 403 / 404 / 419 / 500
TesLab записывает ошибки отдельно по HTTP-статусам:
Error.400.log, Error.401.log, Error.403.log, Error.404.log,
Error.419.log, Error.500.log.
Формат записи ошибки:
2025-12-05 09:14:32 uid: 100 {"id":396955,"-API-Method":"laboratory\/tasks\/list"}
[{"file":"\/opt\/TesLab\/server\/functions\/class\/APP.php","line":323,"function":"Debug","class":"APP","type":"::","args":["Error.401","\u001b[1;33m{\"id\":396955,\"-API-Method\":\"laboratory\\\/tasks\\\/list\"}\u001b[0m\n","error",2]},{"file":"\/opt\/TesLab\/server\/functions\/class\/APP.php","line":831,"function":"Error","class":"APP","type":"::","args":[401,null,{"mess":"Пожалуйста, укажите корректные логин и пароль."}]},{"file":"\/opt\/TesLab\/server\/functions\/class\/APP.php","line":169,"function":"CheckToken","class":"APP","type":"::","args":[]},{"file":"\/opt\/TesLab\/server\/index.php","line":99,"function":"__construct","class":"APP","object":{},"type":"->","args":[""]}]
Расшифровка:
-
Первая строка: дата/время, uid, и JSON-объект, который направлялся.
В объекте отдельно указывается метод в поле
-API-Method. - Вторая часть: JSON-массив трассировки (stack trace) - где именно возникла ошибка (файл, строка, функция, аргументы) и, как правило, причина/сообщение об ошибке.
Быстрые подсказки по статусам:
- 401 - авторизация/токен (часто: неверный логин/пароль, истёк токен, проблемы с доступом)
- 403 - недостаточно прав / запрет доступа
- 404 - неверный URL/метод или ресурс не найден
- 419 - “сессионные”/CSRF-проверки (зависит от сценария и окружения)
- 500 - внутренняя ошибка сервера (исключение/фатальная ошибка)
Общие логи ошибок: ErrorGlobal.min.log и GlobalErrors.log
ErrorGlobal.min.log и GlobalErrors.log - суммарные (глобальные) журналы, куда попадают ошибки в агрегированном виде. Их удобно смотреть, когда неясно, в какой именно статусный файл попало событие, или когда нужно увидеть картину целиком.
sysUpdate.log - журнал обновлений
sysUpdate.log фиксирует процесс обновления TesLab. Пример:
2025-08-26 15:40:13 uid: 100 Start by 100
2025-08-26 15:40:13 uid: 100 Check new version
2025-08-26 15:40:13 uid: 100 Find new version: 9.0.0922
2025-12-26 16:01:48 uid: 100 Start by 100
2025-12-26 16:01:48 uid: 100 Check new version
2025-12-26 16:01:48 uid: 100 Find new version: 9.0.0935
Что означает: время события, кто инициировал обновление (uid), и системные сообщения о шагах проверки/поиска версии.
cron.log - журнал выполнения плановых задач
cron.log ведётся блоками. Каждый запуск начинается строкой Start с датой и временем,
далее может идти произвольная диагностическая информация (если были задачи/ошибки), а завершение отмечается строкой ==.
Start 2026-01-04 09:33
==
Start 2026-01-04 09:34
==
Когда полезно: проверить, запускался ли cron по расписанию, были ли ошибки при выполнении задач, увидеть вывод модулей, которые пишут диагностику в cron.
Дополнительные логи модулей
В папке logs могут появляться и другие файлы логирования (в зависимости от подключённых модулей/интеграций), например:
cmd.log,wss.log,sqlErrors.logBackupError.log,archiveError.log,downloadErrors.logSyncFGIS.log,FGIS.logTelegram.log,tg.log,chatterError.logwebhook.log,sbisErrors.log,BD_Errors.logRImportErrG.log,RImportErr.log
Примечание: наличие и формат этих файлов зависят от конкретного модуля. Если вы видите подозрительный сбой -
начните с профильного файла (например, ошибки резервного копирования - с BackupError.log), а затем проверьте глобальные журналы ошибок.
Папка db - журнал изменений базы данных
Внутри /opt/TesLab/server/logs/db хранятся файлы изменений БД в формате JSON.
Название файла соответствует таблице (например, clients_acts.json).
Пример содержимого:
[{"i":788,"r":"127.0.0.1","d":"2025-12-21 21:45:25","t":2,"u":0,"v":{"invoice":"827"}},
{"i":789,"r":"127.0.0.1","d":"2025-12-21 23:16:23","t":1,"u":0,"v":{"cid":"980","aid":"257","a_date":"2025-12-21","c_list":1,"i_price":5000,"r_list":"{\"25841\":5000}","p_start":"2024-07-16","p_end":"2025-12-21","nds":0,"vat":20,"invoice":527,"tp":"laboratory","ucomment":"","comment":"","a_num":"12\/2","whoadd":0}},
{"i":790,"r":"127.0.0.1","d":"2025-12-27 14:56:12","t":1,"u":0,"v":{"cid":"401","aid":"1066","a_date":"2025-12-27","c_list":1,"i_price":0,"r_list":"{\"26337\":0}","p_start":"2025-10-08","p_end":"2025-12-27","nds":2,"vat":20,"tp":"laboratory","ucomment":"","comment":"","a_num":"12\/3","whoadd":0}}]
Что означает структура записи:
| Поле | Описание |
|---|---|
i |
ID записи (идентификатор сущности в таблице) |
r |
IP-адрес, с которого было внесено изменение |
d |
Дата и время изменения |
u |
ID пользователя, который внёс изменение |
t |
Тип операции: 1 - добавление, 2 - изменение, 3 - удаление |
v |
Объект изменённых значений: ключи - названия столбцов, значения - то, что записалось в БД |
Когда полезно: восстановить историю изменений по конкретной таблице/записи, понять кто/когда/с какого IP менял данные, увидеть фактически сохранённые значения.
Защита от переполнения: архивирование логов
Чтобы логи не разрастались бесконечно, TesLab автоматически архивирует лог-файлы при превышении размера ~20 МБ
(порог 20971519 байт).
Логика архивирования:
- Если текущий лог
/logs/<file>.logпревысил порог - он упаковывается в ZIP-архив и переносится в файловое хранилище. - Архив создаётся (или дополняется) по маске:
XFILES_DIR/logs/<file>-YYYY-MM.zip - Если в этом месяце архив уже существует - новый “переполненный” лог добавляется внутрь существующего ZIP.
- Имя файла внутри ZIP:
<file>_YYYY-MM-DD_HH:MM.log- чтобы было видно, когда именно он был архивирован.
Сроки хранения логов
Ограничений по срокам хранения логов TesLab не задаёт: логи (и архивы логов) хранятся до тех пор, пока администратор сервера не удалит их. Это позволяет при необходимости поддерживать длительное хранение (например, полную историю за несколько лет) в соответствии с политиками организации и доступным объёмом дискового пространства.
Где задаётся XFILES_DIR
XFILES_DIR - это путь к файловому хранилищу TesLab (куда, в том числе, складываются архивы логов).
Значение задаётся в конфигурационном файле:
/opt/TesLab/server/config/config.php
Через константу, например:
define('XFILES_DIR', '/TesLabFiles');
Совет: при поиске архивов логов ориентируйтесь на каталог
XFILES_DIR/logs (например, /TesLabFiles/logs).
Время и синхронизация (NTP)
В логах TesLab используется серверное время. Корректность времени и синхронизация по NTP обеспечиваются средствами операционной системы и находятся в зоне ответственности администратора сервера.
Как быстро посмотреть логи (Linux)
Несколько полезных команд для администратора:
# Смотреть "хвост" лога в реальном времени
tail -f /opt/TesLab/server/logs/IN.log
# Найти события конкретного пользователя (uid)
grep "uid: 100" /opt/TesLab/server/logs/IN.log
# Быстро найти ошибки за период (пример: 500)
tail -n 2000 /opt/TesLab/server/logs/Error.500.log
# Поиск по методу API в ошибках
grep "laboratory/tasks/list" /opt/TesLab/server/logs/Error.401.log
Важно про безопасность
- Логи могут содержать параметры запросов (JSON), а также трассировки ошибок. Ограничьте доступ к папке
logsтолько ответственным сотрудникам. - Перед передачей логов третьим лицам убедитесь, что вы соблюдаете требования вашей организации по защите данных.