Windows Azure 上の ASP.NET アプリケーション。アプリケーションはスケーラブルで、1..N の Web ロール インスタンスで実行されます。
log4net が Windows イベント ログに書き込み、Windows Azure Diagnostics が Azure ストレージに統合されます。
現在、log4net 構成は Web.config に保存されています。
アプリケーションのログ記録には、次の要件があります。
ログに書き込む 1 つ以上のタイプのログ エントリのリストを指定する機能
ログエントリがログに書き込まれるレベルを指定する機能 (ログエントリごと)
最初の要件は、ロガーの命名規則によって満たされます。ロガーは階層を定義し、どのステートメントを出力するかどうかをプログラマーが実行時に制御できるようにします。
ILog log = LogManager.GetLogger("Davanti.WMS.Core.Logic.Inventory");
2 番目の要件は、ロギング レベル DEBUG、INFO、WARN、ERROR、および FATAL を使用して達成できます。
log.Debug("Process has completed");
現在の状況
Web.config ファイルには、Windows イベント ログにリダイレクトする log4net 構成が 1 つだけあります。また、中央データベースに保存されている設定に基づいて、アプリケーション コード ベースで、何をログに記録するか (要件 1 を参照) とログの深さ(レベル) を制御します (要件 2 を参照)。
このアプローチはアプリケーションのパフォーマンスに悪影響を及ぼします。これは、アプリケーション自体が特定のメッセージをログに記録する必要があるかどうかを (同期的に) ロギング フレームワークで (非同期的に) 確認する必要があるためです。
必要な状況
log4net 設定から、何をログに記録するか、およびログ レベルを制御したいと考えています。問題は、すべてのWindows Azure Web ロール インスタンスに log4net 設定を適用する必要があることです。これに最適なアプローチは何ですか?
また、ロギングを有効にするためのよりユーザー フレンドリな方法 (たとえば、コンサルタントによるもの) を用意したいと考えています。どのような可能性がありますか?
たとえば、エンタープライズ ライブラリ構成エディターを使用する場合と同様です。構成設定の視覚的表現。 http://img651.imageshack.us/img651/930/logging.jpg