Итак, у меня есть консольные приложения, работающие как запланированные задачи на разных клиентских серверах. Эти приложения иногда сталкиваются с сетевыми проблемами и другими дорожными блоками. В настоящее время я NORD успешно отправляет оповещения по электронной почте и регистрируется в нашем .NET API/веб-сайте.NLog: консольное приложение - прекратить отправку повторяющихся писем при повторном сбое
Вещь, иногда приложение запускается каждые 2 минуты (не спрашивайте, нет выбора), и если это приложение имеет сетевую ошибку, оно будет продолжать отправлять сообщения об ошибках каждые 2 минуты, пока проблема не возникнет решена. В то время как некоторые из них могут оценить, что это упорство, нам не нужны все эти электронные письма. Только начальный и, возможно, каждый час после этого для «подталкивания» или напоминания.
Я думал об этом и имею план, но я чувствую, что, возможно, мне не хватает какой-либо функции NLog, которую я мог бы использовать здесь.
Я знаю о Buffering Wrapper, но это похоже на постоянно работающее приложение. Наши консольные приложения запускаются и останавливаются с интервалами, поэтому это не похоже на решение.
Я мог бы написать приложение «spooler», которое будет наблюдать за таблицей/файлом NLog DB и отправляет электронные письма на основе соответствующих условий, таких как «Эта ошибка показана за последние X минут или она совершенно новая?» и решили отправить электронное письмо или нет ... но это похоже на дополнительное «движение обезьян», тогда как некоторые настройки этого буферизатора могут работать каким-то образом, я не знаю ... или какой-то другой магический плагин NLog - это ключ. ..
Идеи приветствуются. Заранее спасибо :)
I не понимаю, что вы имеете в виду.Написание моей собственной оболочки не имеет смысла, поскольку эти консольные приложения запускаются через планировщик задач каждые 2 минуты и завершают работу. Они запускаются и завершаются так, как я могу определить между прогонами, если он поймал эту ошибку ранее, используя Buffering Wrapper? (если возможно) –
Ну, вам нужно хранить (и читать) где-то, что событие было поднято (например, файл, база данных). Вы можете сделать это в обертке. – Julian
ОК, так что это вроде как я сказал в вопросе, та же концепция –