Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.06.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.004 c
3-1289558383
dest81
2010-11-12 13:39
2013.06.09
Поиск по несуществующему полю


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


15-1359433991
O'ShinW
2013-01-29 08:33
2013.06.09
Безопасность домашнего WiFi


2-1352205351
NieL
2012-11-06 16:35
2013.06.09
транзакции


15-1359581349
Knight
2013-01-31 01:29
2013.06.09
Arj архив





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский