Логирование событий в приложении (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 поиск по нашей документации

SQL-инструмент для создания личных кабинетов на сайте

Суть подхода и история создания Falcon Space
Веб-платформа для создания личных кабинетов

Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом

Это быстрое внесение изменений

по ходу эксплуатации программы. Как создается функционал на платформе

Это простой удобный интерфейс

адаптация под мобильные устройства. Про юзабилити платформы

Веб-приложения на MS SQL. Партнерская программа для разработчиков и веб-студий

Вы можете разрабатывать самостоятельно или сотрудничать с нами в плане веб-разработки на платформе Falcon Space, используя только SQL и HTML.
Смотреть примеры с кодом SQL
Документация по платформе
Работа на MS SQL Server