0

Windows Azure 上の ASP.NET アプリケーション。アプリケーションはスケーラブルで、1..N の Web ロール インスタンスで実行されます。

log4net が Windows イベント ログに書き込み、Windows Azure Diagnostics が Azure ストレージに統合されます。

現在、log4net 構成は Web.config に保存されています。

アプリケーションのログ記録には、次の要件があります。

  1. ログに書き込む 1 つ以上のタイプのログ エントリのリストを指定する機能

  2. ログエントリがログに書き込まれるレベルを指定する機能 (ログエントリごと)

最初の要件は、ロガーの命名規則によって満たされます。ロガーは階層を定義し、どのステートメントを出力するかどうかをプログラマーが実行時に制御できるようにします。

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

4

1 に答える 1

0

デフォルトの構成プロバイダーは、あなたのケースでは app.config または web.config を調べます。ただし、XmlConfigurator クラスを使用して、ストリームから構成を読み込むことができます。

http://logging.apache.org/log4net/release/sdk/log4net.Config.XmlConfigurator.Configure_overload_7.html

ロールの構成では、BLOB の場所を指定してから、Azure ストレージ SDK の BLOB クライアント オブジェクトを使用して、単一の BLOB の場所から xml を読み込むことができます。

Log4Net 構成: http://logging.apache.org/log4net/release/manual/configuration.html

これは、xml blob を使用する Azure Diagnostics 構成に似ています。

これに対する注意点は、ログをライブで変更したい場合は、ファイルの更新を定期的にキューに入れるなど、さらに実装を行う必要があることです。

于 2012-11-29T16:57:44.203 に答える