В платформе реализовано разностороннее логирование, которое позволяет не только отследить возможные причины произошедшей ошибки, но и отслеживать работу пользователей и собирать статистику.
Логирование событий приложения
Для осуществления логирования событий, происходящих в приложении используются как текстовые файлы, так и БД.
В файл admin.txtзаписываются события, касающиеся развертывания решения на сервере и его дальнейшей инициализации. Файл располагается в директории решения, по следующему адресу: %solution_name%\log
Используя лог в данном файле можно полностью отследить процесс развертывания решения. При успешном развертывании подробное описание процесса выглядит следующим образом:
30.06.2015 10:06:41 Start building solution 30.06.2015 10:06:41: DB scripts ok 30.06.2015 10:06:43: Database ok 30.06.2015 10:06:57: Provision ok 30.06.2015 10:06:57: Filters ok 30.06.2015 10:06:57: Sync patch ok 30.06.2015 10:06:59: Admin ok 30.06.2015 10:07:00: Clustered keys patch ok 30.06.2015 10:07:00: Default NEWSEQUENTIALID values on tabular sections ok 30.06.2015 10:07:00: initial data load ok 30.06.2015 10:07:00: sqlite ok 30.06.2015 10:07:00: Code generation ok 30.06.2015 10:07:01: Client dll ok 30.06.2015 10:07:01: Server dll ok 30.06.2015 10:07:01: Resources ok 30.06.2015 10:07:01: Solution has been successfully built
Хранение логов всех событий мобильного приложения осуществляется в таблице ___Log
При отправке ошибки с МА также передается файл info.xml, в котором записаны последние 1000 событий.
Структура таблицы ___Log:
Имя поля | Назначение |
---|---|
Date | Дата и время события |
Event | Вид события |
Content | дополнительная информация о событии |
Виды событий
Вид | Описание | Содержимое |
---|---|---|
application_closed | Окончание работы приложения | |
application_maximized | Приложение развернуто | |
application_minimized | Приложение свернуто | |
application_started | Начало работы приложения | |
clicked | Клик пользователем | id_элемента; заголовок_элемента |
crash | Ошибка, приводящая к вылету приложения | текст_ошибки |
error | Ошибка, не приводящая к вылету приложения | текст_ошибки |
screen_opened | Завершение загрузки экрана | |
screen_opening | Начало загрузки экрана | имя_экрана; имя_контроллера; список_параметров |
sync_download | Список загруженных сущностей | тип_сущности количество; ... |
sync_download_tombstone | Список загруженных удаленных сущностей | тип_сущности количество; ... |
sync_finished | Окончание синхронизации | |
sync_started | Начало синхронизации данных | |
sync_upload | Список выгруженных сущностей | тип_сущности количество; ... |
sync_upload_tombstone | Список выгруженных удаленных сущностей | тип_сущности количество; ... |
text_input | Ввод текста пользователем | id_элемента; текст |
workflow_back | Переход назад по рабочему процессу | |
workflow_back_to | Переход назад на шаг рабочего процесса | имя_шага |
workflow_finished | Текущий рабочий процесс остановлен | причина |
workflow_forward | Переход на шаг рабочего процесса | имя_шага; параметры |
workflow_forward_not_allowed | Переход на шаг рабочего процесса запрещен | имя_шага; параметры |
workflow_paused | Текущий рабочий процесс приостановлен | |
workflow_started | Рабочий процесс запущен | имя_рабочего_процесса |
Логирование обменов данными
При логировании обменов данными, в качестве хранилища логов используется БД SQL. Каждый лог хранится в отдельной таблице, каждая строка которой является отдельным событием.
В таблицу [admin].[AsyncUploadSession] записываются данные о загрузке данных на сервер при использовании метода UploadData.
Структура таблицы [admin].[AsyncUploadSession]:
Имя поля | Назначение |
---|---|
StartTime | Время начала |
EndTime | Время окончания |
Status | Статус синхронизации |
В поле Status содержится полная информация о статусе транзакции. В поле может отображаться следующая информация:
- n completed - количество обработанных объектов. Данное значение отображается, в случае, если загрузка еще не завершена. Например, 43 completed
- ok - сообщение о успешной загрузке данных
- Текст ошибки - если загрузка была прервана с ошибкой, в поле будет отображаться полный текст ошибки.
В таблицу admin.DeviceLog, записываются данные о загрузке данных на сервер при использовании метода UploadData.
Вы можете получить данные логов, программно вызвав метод сервера DownloadDeviceLog
Структура таблицы admin.DeviceLog
Имя поля | Назначение |
---|---|
StartTime | Время начала |
EndTime | Время окончания |
FirstSync | 1 - первичная синхронизация, 0 - последующие |
Direction | Направление синхронизации: 0 - upload, 1 - download |
DeviceId | идентификатор устройства |
Login | логин пользователя |
UserId | GUID пользователя |
UserEMail | e-mail пользователя |
ContentLength | размер входящих данных, байт |
ContentType | тип входящих данных |
Accept | тип входящих данных, принимаемых сервером |
AcceptEncoding | кодировка входящих данных, принимаемая сервером |
Host | имя хоста |
ConfigName | имя конфигурации решения |
ConfigVersion | версия решения |
CoreVersion | версия платформы |
ResourceVersion | версия мобильного приложения |
OutputContentLength | размер исходящих данных до сжатия, байт |
StatusCode | статус операции, 200 в случае успеха |
StatusDescription | текст ошибки |
Логирование обменов файлами
Для хранения логов обмена файлами между сервером и мобильным клиентов используется таблица admin.DeviceLogWebDAV.
Структура таблицы admin.DeviceLogWebDAV
Имя поля | Назначение |
---|---|
StartTime | Время начала |
EndTime | Время окончания |
DeviceId | идентификатор устройства |
UserId | GUID пользователя |
State | Статус |
Error | Ошибка |
Directory | Каталог |
LoadedSize | Объем переданных данных, байт |
LoadedCount | Количество переданных файлов |
DeletedSize | Объём удаленных данных, байт |
DeletedCount | Количество удалённых файлов |
ConfigName | имя конфигурации решения |
ConfigVersion | версия решения |
CoreVersion | версия платформы |
ResourceVersion | версия мобильного приложения |