1 つの注意事項: 大きなショップで 100 以上のアプリがあり、それらのアプリを実行するホストが数百から数千に上る場合は、密結合を誘発するものを避けてください。アプリケーションのログ記録はログ リポジトリの可用性に依存するため、SQL Server やその他のデータベース ソリューションに直接接続することはほぼ不可能です。
中央リポジトリの可用性は、単に「接続できない場合はログに記録しない」よりも少し複雑です。通常、最も興味深いイベントは、物事がスムーズに進んだときではなく、問題が発生したときに発生するためです。興味深いことが起こったときにロギングがエントリを削除すると、インシデントを解決するために信頼されなくなり、他の利害関係者 (つまり、アプリケーション所有者) の牽引力とサポートを得ることができなくなります。
保持を実装し、失敗したログ情報の配信を自分で再試行できると判断した場合、困難な戦いに直面していることになります。これは簡単な作業ではなく、保持された情報の効率的で信頼性の高いストレージから始めて、思ったよりもはるかに複雑です。最後に、適切な再試行とインテリジェントなフォールバック ロジックを導入します。
また、認証とセキュリティの問題に対する答えも必要です。大規模な組織には、さまざまな信頼関係を持つ複数のドメインがあり、従業員は自宅から VPN またはダイレクト アクセス経由で侵入し、一部のアプリケーションは無人で実行され、一部のサービスはローカル ユーザーとして実行するように構成され、一部のマシンはドメインに参加していません。各アプリケーションのロギング モジュールがどのようにデプロイされ、中央リポジトリで認証されるのか (およびどのような状況がサポートされないのか) という質問への回答です。
ロギング モジュールには、すぐに使用できる配信メカニズムを使用するのが理想的です。MSMQ はおそらく最も適しています。堅牢な非同期の信頼性の高い配信 (少なくともほとんどのユース ケースの範囲で)がインストールされている場合は、すべての Windows ホストで利用できます(オプション)。アプリケーションがデフォルト以外の OS コンポーネントに依存することが主な問題点です。
中央リポジトリ ストレージは、要求された情報を配信できなければなりません。たとえば、次のようになります。
- インシデントを調査するアプリケーション開発者
- 顧客の苦情によって報告された失われたトランザクションを調査する顧客サポート チーム
- フォレンジックを行うセキュリティ組織
- 統計、トレンド、および集約情報 (BI) を要求するビジネス マネージャー。
重要な組織 (サイズ、有効期間) にこれを提供できる唯一のストレージはリレーショナル エンジンです。したがって、おそらく SQL Server です。テキスト ファイルに対して分析を行うだけでは、実際にはうまくいきません。
したがって、メッセージング ベースのログ転送/配信 (MSMQ) とリレーショナル セントラル リポジトリ (SQL Server) をお勧めします。その上におそらく分析コンポーネント (Analysis Services Data Mining) があります。ご覧のとおり、これは明らかに簡単な作業ではなく、単に log4net を構成するだけではありません。
何をログに記録するかについては、すでに考えているとおっしゃっていますが、追加の 2c を追加したいと思います。多くの場合、特にインシデントの調査では、追加情報を要求する機能が必要です。これは、インシデント マシンの特定のファイル コンテンツ、レジストリ キー、パフォーマンス カウンター値、または完全なプロセス ダンプを知りたいということを意味します。中央リポジトリ インターフェイスからこの情報を要求できることは非常に便利ですが、必要な場合に備えて常にこの情報を収集することは実際的ではありません。これは、アプリケーションと中央リポジトリの間にある種の双方向通信が必要であることを意味します。アプリケーションがインシデントを報告すると、追加情報 (障害のあるプロセスのダンプなど) を追加するように求められる可能性があります。
この答えは現時点ではやり過ぎのように思えるかもしれませんが、私はかなり長い間この問題の領域に関わっていました。これらの要件が存在し、有効な懸念事項であり、実装するとソリューションが非常に役立つことがわかります。最終的に、測定できないものを修正することはできません。大規模な組織は、ロギングや監査など、アプリケーション ストックの適切な管理と監視に依存しています。
ソリューションを提供するサード パーティ ベンダーがいくつかあり、log4net と統合されているものもあります。たとえば、bugcollect.com (完全な開示: それは私の会社です)、Error Traffic ControllerまたはExceptioneerなどです。