1

次の要件で、Web サービス アプリケーションにログインを実装しています。

  • ログはデータベースに保存する必要があります
  • ログは機械可読である必要があります(すべての情報は個別の列に保存する必要があります)
  • ログは拡張可能である必要があります (クライアント コードは、データベースの特定の列に移動する情報を指定できます)
  • クライアントコードからデータベースに大きなオブジェクトを渡すことができる必要があります (シリアライズ)
  • パフォーマンスに影響を与えるべきではありません (DB 書き込み操作は別のスレッドで実行する必要があります)

log4net および Similair ソリューションには DB アペンダーがあることを知っています。しかし、延期された DB 書き込みについてはどうでしょうか? そして大きな物体?

これの基本的な使用例は、イベントを調べて、実行の任意の時点で入力/出力オブジェクトを取得できる機能です。

アプリケーションのロギングを別のもので台無しにしているように感じます。そのような製品/アーキテクチャの正しい名前を知っている人はいますか? 多分いくつかの一般的な解決策がありますか?

4

1 に答える 1

1

ReflectInsightを試してみてください。拡張プロパティを追加できる構造形式を使用します。また、Db ライター リスナーを備えているか、独自のリスナーを作成できます。

編集:

  1. ログはデータベースに保存する必要があります(はい、これには DB リスナーを使用できます)
  2. ログは機械可読である必要があります (すべての情報を個別の列に保存する必要があります) (はい、すべてのメッセージに保存される標準プロパティがあり、DB にも保存される拡張プロパティを使用して独自のプロパティを定義できます)およびライブ ビューアーなどの他のリスナー)
  3. ログは拡張可能である必要があります (クライアント コードは、データベースの特定の列に移動する情報を指定できます) クライアント コードからデータベースに大きなオブジェクトを渡すことができる必要があります (シリアル化) (はい、これはすぐに使用できます。必要なプロパティを構成できます簡単な設定でDBに保存するカスタムオブジェクトは自動的にログ(またはあなたの場合はDB)でシリアル化されます.RIはロギングに構造形式を使用します)
  4. パフォーマンスに影響を与えるべきではありません (DB 書き込み操作は別のスレッドで実行する必要があります) (はい。ホスト アプリケーションのパフォーマンスに影響を与えないようにするために、すべてのロギング アクティビティは別のワーカー スレッドを介してリスナーに送信されます)
  5. Live Viewer だけで 80,000 メッセージ/秒を受信できます
  6. ほとんどのメッセージはハード ドライブにキャッシュされるため、ライブ メモリのフットプリントは小さい
  7. 自動保存/自動パージ機能があります。
  8. NLog、Log4net、EntLib、Common Logging フレームワークを簡単に使用して、RI のフレームワークにマップできます (ただし、データセット、コレクションなどの豊富な詳細をログに記録する機能は失われます)。

ここに画像の説明を入力

免責事項: 私は ReflectSoftware で直接働いているわけではありませんが、ReflectInsight の構築を支援する主要な開発者の 1 人です。私の主な目標は、ロギング フレームワークのニーズを抱えているすべての人を支援し、そのような点で該当するスタック オーバーフローの質問にのみ回答することです。

于 2015-05-13T12:53:39.027 に答える