Логирование (журналы событий) TesLab

В документации мы постарались ответить на частые вопросы по работе TesLab, с которыми сталкиваются пользователи.
Если Вы не нашли ответ на свой вопрос, напишите нам.

Личный кабинет

Логирование (журналы событий) 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"}]}

Расшифровка записи:

  1. Дата и время события
  2. ID пользователя (uid)
  3. Вызываемый метод (например, laboratory/tasks/list)
  4. 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":[""]}]

Расшифровка:

  1. Первая строка: дата/время, uid, и JSON-объект, который направлялся. В объекте отдельно указывается метод в поле -API-Method.
  2. Вторая часть: 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.log
  • BackupError.log, archiveError.log, downloadErrors.log
  • SyncFGIS.log, FGIS.log
  • Telegram.log, tg.log, chatterError.log
  • webhook.log, sbisErrors.log, BD_Errors.log
  • RImportErrG.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 только ответственным сотрудникам.
  • Перед передачей логов третьим лицам убедитесь, что вы соблюдаете требования вашей организации по защите данных.