Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.06.09;
Скачать: CL | DM;

Вниз

Прием для логирования/информирования   Найти похожие ветки 

 
O'ShinW ©   (2013-02-01 11:13) [0]

Пока писал, придумал :)
Но все равно, вдруг что посоветуете. (на случай если Кулибин был в предках / все украдено до нас)

класс для логирования/информирования об ошибках в программах(информирования себя, по почте или смс).
Основа - Список из записей
 PErrorItem = ^TErrorItem;
 TErrorItem = record
   ErType: string;
   ErText: string;
   IncCountBetweenErrors: integer;
   NextCountForSignal: Integer;
   IncTimeBetweenErrors: TDateTime;
   NextTimeForSignal: TDateTime;
   LastTimeCall: TDateTime;
   LastCountCall: Integer;
   CountAll: Integer;
   Count: Integer;
   Time: TDateTime;
 end;

Методы
   procedure AddError(const ErText: string); overload;
   procedure AddError(const ErType, ErText: string); overload;
   procedure SetTimeRule(const ErType, ErText: string; IncTimeBetweenErrors: TDateTime); overload;
и т.п.

Допустим, Ошибка. Не важно какая.
пишем
EM.AddError("Не важно какая");
В списке создалась ошибка типа "NONE", с текстом "Не важно какая"

Если она опять случится EM.AddError("Не важно какая");,
тогда у записи инкриминируется счетчик Count, а при достижении NextCountForSignal дернется уведомление (пока не написал, может TErrorItem будет класс, пока не знаю)

Это ладно.

Когда программа общается с кучей железок по сети, ошибок может быть 100 в секунду.
Накой этот спам нужен.

Хотелось бы получить уведомление по первой, и следующее через час, если там все еще не наладилось
Тут метод SetTimeRule, который для всех ошибок по типу (ErType) или по тексту(ErText) (или и по тому и по др.) выставит соответствующее    
IncTimeBetweenErrors: TDateTime;
или NextTimeForSignal: TDateTime;

Допустим, хочется выставить правила для ошибок, которых еще нет.
Тогда по SetTimeRule создаём ошибку, с Count = 0

И тут засада.
Создав ошибку по типу(SOmeType1), в поле текста имеем NONE
и наоборот.

Далее, случается так, что
добавляется следующая ошибка того же типа, но другого текста
EM.AddError(SomeType1, SomeText);
По идее, для SomeType1 уже задали правило, и к этой ошибке должно оно применяться тоже.

Но Как об этом узнать?

=====
Что придумал

Вместо >> создаём ошибку, с Count = 0
при юзании SetXXXXRule, создается другой, второй список, с практически аналогичными полями, где коллекционируются ошибки-правила.
Потом, при добавлении ошибки, она, сначала инициализируется всеми своими полями по совпадению из списка правил, не меняя в этом списке правил ничего, а потом добавляется.


 
Игорь Шевченко ©   (2013-02-01 12:48) [1]

ничего не понял



Страницы: 1 вся ветка

Текущий архив: 2013.06.09;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.006 c
9-1194720876
Extracter
2007-11-10 21:54
2013.06.09
Не работают glDrawArrays и glDrawElements- не найдены


15-1359640696
БарЛог
2013-01-31 17:58
2013.06.09
Synolony хранилище


15-1359702784
O'ShinW
2013-02-01 11:13
2013.06.09
Прием для логирования/информирования


3-1289900330
12
2010-11-16 12:38
2013.06.09
ORA-20004 при попытке задать параметр процедуре


8-1230999582
maxistent
2009-01-03 19:19
2013.06.09
Захват звука с микрофона и ACM-Components