РуководстваОснова Falcon SpaceОсновные компонентыВозможностиКоммуникация пользователейДизайн, стилизация, юзабилитиЛендингиУниверсальный APIИнтеграцииКаталогиНавигацияДокументыДополнительные компонентыПродвижение, SEOСистемные моментыСистемное администрирование
Установка веб-платформы Falcon Space на сервер/хостингFAQ для системного администратора сервераПрофилактика, диагностика работы сайта на Falcon SpaceКак сделать копию сайта для тестовПеренос компонентов между БДКак улучшить производительность IIS (IIS Perfomance Boost)Как организовать периодическую отправку на почту отчета по ошибкамБезопасность. Как ограничить вход пользователям по IP, порту или доменуКак включить системный лог в Core версии платформыКак изменить таймаут запросов к БДWindows Server, IIS, Как сделать, чтобы сайт работал от определенной учетной записиЗащита от ботов. Настройка блокировки частых запросов по IP
HOWTOТаблицыФормыПоля формыЗагрузка файлов, картинокHOWTO SQLHOWTO JSHOWTO ВерсткаРешение проблем
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Как организовать периодическую отправку на почту отчета по ошибкам
Общая схема работы:
- Запускаем периодический запрос через механизм sync - 1 раз в день.
- Процедура генерирует разметку
- Если разметка не пустая, то отправляем на почту через внешнее действие внутри sync
Процедура генерации разметки:
CREATE OR ALTER PROCEDURE [dbo].[as_exception_diag]
@backendLimit int =20,
@frontendLimit int =20,
@s nvarchar(max) OUTPUT
AS
BEGIN
declare @t1 table (title nvarchar(max), db nvarchar(256), [desc] nvarchar(max),
digit nvarchar(512), important int)
IF OBJECT_ID('tempdb..#exceptions') IS NOT NULL DROP TABLE #exceptions
CREATE TABLE #exceptions ( created datetime, header nvarchar(512))
insert into #exceptions
select created, header from as_trace t3 where t3.code='exception' and cast(created as date) > cast(dateadd(day, -7, getdate()) as date)
declare @week int = isnull((select count(*) from #exceptions where cast(created as date) > cast(dateadd(day, -7, getdate()) as date) and CHARINDEX('jserror', header)<1 ), 0)
declare @yesterday int = isnull((select count(*) from #exceptions where cast(created as date) = cast(dateadd(day, -1, getdate()) as date) and CHARINDEX('jserror', header)<1 ), 0)
declare @today int = isnull((select count(*) from #exceptions where cast(created as date) = cast(getdate() as date) and CHARINDEX('jserror', header)<1 ), 0)
declare @lastHour int = isnull((select count(*) from #exceptions where created > dateadd(hour, -1, getdate()) and CHARINDEX('jserror', header)<1 ), 0)
declare @jsweek int = isnull((select count(*) from #exceptions where cast(created as date) > cast(dateadd(day, -7, getdate()) as date) and CHARINDEX('jserror', header)>0 ), 0)
declare @jsyesterday int = isnull((select count(*) from #exceptions where cast(created as date) = cast(dateadd(day, -1, getdate()) as date) and CHARINDEX('jserror', header)>0 ), 0)
declare @jstoday int = isnull((select count(*) from #exceptions where cast(created as date) = cast(getdate() as date) and CHARINDEX('jserror', header)>0), 0)
declare @jslastHour int = isnull((select count(*) from #exceptions where created > dateadd(hour, -1, getdate()) and CHARINDEX('jserror', header)>0), 0)
if(@yesterday>=@backendLimit) begin
declare @s1 nvarchar(max)=''
set @s1 = @s1 + '<h2>Backend errors</h2>'
set @s1 = @s1 + 'week - <b>' + cast(@week as nvarchar) + '</b><br>'
set @s1 = @s1 + 'yesterday - <b>' + cast(@yesterday as nvarchar) + '</b><br>'
set @s1 = @s1 + 'today - <b>' + cast(@today as nvarchar) + '</b><br>'
set @s1 = @s1 + 'lastHour - <b>' + cast(@lastHour as nvarchar) + '</b><br>'
set @s = @s+ @s1
END
if(@yesterday>=@frontendLimit) begin
declare @s2 nvarchar(max)=''
set @s2 = @s2 + '<h2>Frontend errors (JS)</h2>'
set @s2 = @s2 + 'week - <b>' + cast(@jsweek as nvarchar) + '</b><br>'
set @s2 = @s2 + 'yesterday - <b>' + cast(@jsyesterday as nvarchar) + '</b><br>'
set @s2 = @s2 + 'today - <b>' + cast(@jstoday as nvarchar) + '</b><br>'
set @s2 = @s2 + 'lastHour - <b>' + cast(@jslastHour as nvarchar) + '</b><br>'
set @s = @s+ @s2
END
DROP TABLE #exceptions
end
Backend errors
'
set @s1 = @s1 + 'week - ' + cast(@week as nvarchar) + '
'
set @s1 = @s1 + 'yesterday - ' + cast(@yesterday as nvarchar) + '
'
set @s1 = @s1 + 'today - ' + cast(@today as nvarchar) + '
'
set @s1 = @s1 + 'lastHour - ' + cast(@lastHour as nvarchar) + '
'
set @s = @s+ @s1
END
if(@yesterday>=@frontendLimit) begin
declare @s2 nvarchar(max)=''
set @s2 = @s2 + '
Frontend errors (JS)
'
set @s2 = @s2 + 'week - ' + cast(@jsweek as nvarchar) + '
'
set @s2 = @s2 + 'yesterday - ' + cast(@jsyesterday as nvarchar) + '
'
set @s2 = @s2 + 'today - ' + cast(@jstoday as nvarchar) + '
'
set @s2 = @s2 + 'lastHour - ' + cast(@jslastHour as nvarchar) + '
'
set @s = @s+ @s2
END
end
@backendLimit задает минимальное количество backend исключений за вчера, при котором должно отправляться письмо на почту.
@frontendLimit задает минимальное количество backend исключений за вчера, при котором должно отправляться письмо на почту.
Процедура sync_day с отправкой сообщений об ошибках:
CREATE PROCEDURE [dbo].[falcon_nt_sync_day]
AS
BEGIN
declare @s nvarchar(max) = ''
exec [as_exception_diag] @backendLimit = 5, @frontendLimit = 10, @s=@s OUTPUT
if(len(@s)>0) begin
select 'email' type, 'mail@site.ru' [to], 'Ошибки на site.ru' subject, @s body
end
END
Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Google поиск по нашей документации
Нужна бесплатная консультация?
Планируете делать веб-проект?
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта