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

В системной таблице as_trace хранятся данные по работе приложения. 

Поле code определяет тип события:

  • DBLREQ - фиксируем факт множественных одинаковых запросов со страницы в короткий промежуток времени (например, если форму поместить в каждую строку таблицы)
  • EXCEPTION - исключение (ошибка) при работе программы
  • HUGE - запрос с большим количеством выходных строк (подобные запросы могут создавать нагрузку на процессор)
  • NOACCESS - отказ в доступе к ресурсу (компонент или страница). 
  • NOTFOUND - переход на несуществующую страницу
  • PRINT - смотр состояния переменных в хранимых процедурах через execute as_print @str
  • PV - page visit. Фиксация посещения страницы пользователем (в appsettings.config должно быть logUserAction=1)
  • REG - факт регистрации на сайте (через as_trace_warn)
  • SEARCH - осуществление поиска по сайту через элемент вверху каждой страницы
  • SF - safe form. Сохранение некоторой формы на сайте (в appsettings.config должно быть logUserAction=1)
  • SLOW - фиксация медленного Ajax запроса 
  • SYNC - фиксация работы периодических событий (управление в /syssp) 
  • TG - события (ошибки) телеграма

Вы можете создавать свои коды событий и записывать в хранимых процедурах через exec as_trace_warn

Запрос для получения статистики по элементам trace (он есть в Диагностике /diag): 

select 
  upper(isnull(code, '')) code,
  count(*) totalCount,
  isnull((select count(*) from as_trace t3 where t3.code=t1.code and cast(created as date) > cast(dateadd(month, -1, getdate()) as date) ), 0) [month],
  isnull((select count(*) from as_trace t3 where t3.code=t1.code and cast(created as date) > cast(dateadd(week, -1, getdate()) as date) ), 0) [week],
  isnull((select count(*) from as_trace t3 where t3.code=t1.code and cast(created as date) = cast(dateadd(day, -1, getdate()) as date) ), 0) yesterday,
  isnull((select count(*) from as_trace t2 where t2.code=t1.code and cast(created as date) = cast(getdate() as date) ), 0) today,
  isnull((select count(*) from as_trace t2 where t2.code=t1.code and created >  dateadd(hour, -1, getdate()) ), 0) lastHour,
  isnull((select count(*) from as_trace t2 where t2.code=t1.code and created >  dateadd(minute, -5, getdate()) ), 0) last5Min  
from as_trace t1
group by code
order by code

Таблицу as_trace можно периодически чистить. В ней не нужно сохранять критичные бизнес-данные. 

Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Насколько полезной была статья?

Google поиск по нашей документации

Выгода от использования Falcon Space

В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Нужна бесплатная консультация?
Получить оценку проекта
Создайте концепцию проекта на основе нашего шаблона и получите оценку проекта в виде КП.
Демо-сайт решений
Базисные решения, которые можно гибко адаптировать под себя: менять внешний вид, бизнес-логику и даже структуру базы данных.
Сайт использует Cookie. Правила конфиденциальности OK