.NETの高度に分散され並列化されたシステムで任意のオブジェクトを記録するためのフレームワークを探している

StackOverflow https://stackoverflow.com/questions/1411415

質問

(注:.NETロギングフレームワークに関するいくつかの質問を見てきましたが、要件に似た質問は見ていません。重複したものとして閉じないでください。)

次の機能を備えた高度に分散された並列.NETアプリケーションのロギングフレームワークが必要になります。

  • ログメッセージは多くのスレッドによって生成されるため、スレッドセーフでなければなりません。
  • 各ログメッセージにはタイムスタンプが必要です。フレームワークがこれを自動的に追加する場合、それにより簡単になります。
  • タイムスタンプのほかに、ログメッセージに添付できるように、少なくとも重大度/冗長性またはログメッセージに添付する類似のものが必要です。より多くの(直交する)定義済みパラメーター(メッセージソース、対象ユーザー、メッセージの種類など)を再生すると素晴らしいでしょう。
  • ただし、とにかく独自のパラメーターを追加する必要があります。これらがファーストクラスのフレームワーク市民のように扱われればされるほど(事前定義されたものと同じことができる)、より良い。
  • フレームワークは、少なくとも事前定義されたパラメータに基づいてメッセージをフィルタリングできる必要があります。実行時に気まぐれにフィルタリングを変更する必要があります。
  • 文字列ではなくオブジェクトを挿入する必要があります。文字列は最後にこれらのオブジェクトから作成される場合がありますが、ログメッセージパラメータは最初からフラットな文字列に入れないでください。
  • 一部のロギングは顧客に表示されるため、それらを国際化する必要がある場合があります。 (文字列ではなくオブジェクトをログに記録することを考えると、このハードルはそれほど難しくありませんが、サポートするほど良いです。)
  • ファイルにフィルタリングした後に残ったログメッセージを書き込み、それらのファイルを再び読み込むことができる必要があります。フレームワークがアウトとインをストリーミングできる場合、これを自分で実装する必要はありません。
  • 各ログメッセージは、複数のターゲット(ファイル、ウィンドウ、リモートマシン)に同時に送信される場合があります。
  • ログメッセージをネットワーク経由で送信する必要がある場合、専用のスレッドで送信する必要がある場合があります。
  • ThingはC#から使用されます。

OK、だから私たちは、箱から出してこれをすべて行う何かをそこに見つけることはほとんど不可能だと考えています。これらは、あまりにも多くの要件であり、おそらくあまりにも多くの珍しい要件です。

しかし、基礎として使用し、私たちのものを構築する価値があるものはありますか?

役に立ちましたか?

解決

AFAIK log4net はこれらのほとんどすべてを実行します。主に詳細レベルに基づいてフィルタリングされますが、 Filters を使用して代替基準を使用してフィルタリングすることもできますが、必ずしも「第一級市民」ではありません。

また。 "ファイルを読み戻す" -ロギングフレームワークがこれを直接サポートするとは思わないでしょう。結局のところ、ファイルはファイルです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top