私は、さまざまなクライアントのサーバ上でスケジュールされたタスクとして多くのコンソールアプリケーションを実行しています。これらのアプリは、ネットワークの問題やその他の道路ブロックに時々走ります。私は現在、NLogに電子メールで警告を送信し、.NET Core API/Webサイトにログを記録しています。NLog:console app - 繰り返しの失敗で繰り返し電子メールを送信しないようにする
場合によっては、アプリが2分ごとに実行されるようにスケジュールされています(選択しないでください)。そのアプリでネットワークエラーが発生している場合は、問題が解決するまで2分ごとにエラーメールを送信し続けます。解決されました。一部の人はそれが強靭だと分かるかもしれませんが、私たちはそれらの電子メールをすべて必要としません。ちょうど最初の1つ、そしてたぶん1時間後に「ナッジ(nudge)」やリマインダのために1時間です。
私はこれについて考えており、計画がありましたが、ここで活用できるNLogの機能が不足しているような気がします。
私はBuffering Wrapperについて知っていますが、それは常に動作しているアプリのようです。私たちのコンソールアプリケーションは実行され、間隔を置いて停止するので、これは解決策ではありません。
NLog DBのテーブル/ファイルを監視し、「このエラーは過去X分以内に表示されたのですか、まったく新しいですか?」などの関連条件に基づいてメールを送信する「スプーラ」アプリを作成できました。電子メールを送信するかどうかを決めるのですが、それは特別な '猿の動き'のようですが、Buffering Wrapperのいくつかの調整は、私が気づいていない何らかの方法で動作するかもしれません...またはいくつかの魔法のNLogプラグインが鍵です。 ..
アイデア歓迎。ありがとうございます。
Iあなたが意味することを理解していない。これらのコンソールアプリケーションはタスクスケジューラ経由で2分ごとに実行され、終了するので、自分のラッパーを作成することは意味をなさないと思われます。実行して終了するので、以前にBuffering Wrapperを使用してそのエラーが発生した場合、どの実行を決定するのですか? (可能であれば) –
イベントが発生した場所(ファイル、データベースなど)を保存(および読み込み)する必要があります。あなたはラッパーでそれを行うことができます。 – Julian
これはまあまあですが、同じコンセプトで質問したようです。 –