Как организовать периодическую отправку на почту отчета по ошибкам
Общая схема работы:
- Запускаем периодический запрос через механизм 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 поиск по нашей документации
- Руководства
- Основа Falcon Space
- Основные компоненты
- Возможности
- Коммуникация с пользователем
- Дизайн, стилизация
- API, Интеграции
- Каталоги
- Навигация
- Документы
- Дополнительные компоненты
- Продвижение, SEO
- Системные моменты Перенос компонентов между БД HOWTO. Как быстро перенести решение (таблицы, формы, страницы) на другую базу? HOWTO. Где я могу редактировать процедуру поиска, процедуру общих элементов Layout, процедуры периодического запуска и др? Как изменить длительность показа сообщений HOWTO. Отслеживание изменений хранимых процедур и страниц (logChanges) Как организовать периодическую отправку на почту отчета по ошибкам Форма обратной связи по ошибкам, предложениям suggestion Как разграничивать права на уровне бизнес-логики хранимых процедур Безопасная обработка данных и проверка доступа в хранимых процедурах Как включить системный лог в Core версии платформы Как увеличить размер подгружаемых файлов Использование типовой разметки в виде сниппетов для решения различных задач Работа с редактором кода в личном кабинете разработчика Логирование изменений объектов на примере хранимых процедур Как логировать клики на определенных элементах в системе Обработка старых браузеров (сообщение об устаревшем браузере) Как отследить и ограничить большое количество однородных запросов на сайте Как изменить таймаут запросов к БД Безопасность. Как скрыть некоторые заголовки (http headers) в запросах Логирование событий в приложении (trace) Как улучшить производительность IIS (IIS Perfomance Boost) Windows Server, IIS, Как сделать, чтобы сайт работал от определенной учетной записи Отображение сообщения об offline (Нет сети) Рабочее место разработчика через терминал FAQ для системного администратора сервера Системный анализ работы сайта на Falcon Space. Профилактика, диагностика работы сайта Обновляемые метки времени в сообщениях на сайте Подсказка по интерфейсам хранимых процедур компонентов Защита от CSRF атак через дополнительный токен в формах Дополнительные параметры в @parameters (во многих хранимых процедурах) Массовая оптимизация картинок в менеджерах ресурсов Как логировать события в Falcon в другую базу (чтобы ограничить рост основной базы данных)
- HOWTO
- HOWTO Таблицы
- HOWTO Формы
- Работа с SQL
- HOWTO JS
- HOWTO Верстка
- Решение проблем
Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом
Это быстрое внесение изменений
по ходу эксплуатации программы. Как создается функционал на платформе
Это простой удобный интерфейс
адаптация под мобильные устройства. Про юзабилити платформы
Задать вопрос, обсудить проект
Получить оценку проекта
Создайте концепцию проекта на основе нашего шаблона и получите оценку проекта в виде КП.
Демо-сайт решений
Базисные решения, которые можно гибко адаптировать под себя: менять внешний вид, бизнес-логику и даже структуру базы данных.