3

Azureクラウドベースのアプリケーションが実行するログのレベルを動的に制御できるようにしたいと考えています。これを行うために、共有log4netベースのDLLを作成しています。

log4netロギングについては多くの質問がありますが、ほとんどすべての質問には、構成ファイルまたはその他のテキストファイルへの設定の入力と操作が含まれます。Azureクラウドでは、web.configを変更することは再デプロイを意味します。管理者ポータルからアプリケーションにWebサービス呼び出しを行って、ログを変更したいと思います。

また、いくつかのアプリケーションがあり、各構成ファイルにAppenderの詳細などの同一の設定を保存せずに、それぞれが新しいlog4netベースのDLLを使用するようにします。アプリケーションは、同じ一貫性のあるデータをログに記録します。

この大規模なユーザーベースアプリケーションのパフォーマンスが低下するため、Azure診断を使用したくありません。さらに、ロギングと診断を最小限に抑え(または完全に無効にし)、さまざまなレベルでのみ有効にして、本番環境の問題をデバッグしたり、パフォーマンスのスナップショットを作成したりします。アプリを再デプロイしたくありません。

最善のアプローチは何ですか?

4

2 に答える 2

7

log4net構成をweb/app.configファイルに保存するのではなく、外部から更新できる別のファイル(つまり、ブロブストレージ)に保存し、その場所をサービス構成から動的に変更できるか、その内容を変更できるようにすることをお勧めします。再デプロイなしで変更されました。

log4net.Config.XmlConfigurator.Configure メソッドを調べます。パラメーターなしで呼び出すだけでなく、多くの異なるパラメーターを渡すことができます (パラメーターのデフォルト メソッドは app.config ファイルから読み取りません)。

必要なことを行う 1 つの方法は、Azure ストレージに格納されている構成ファイルのパブリック URL をその Configure メソッドに渡すことです。構成ファイルの場所は、サービス構成から制御できます。

または、構成ファイルを公開したくない場合は、ストレージ内のプライベートな場所から XML 構成の独自のリーダーを実装し、代わりに XML ドキュメントを Configure() メソッドに渡すことができます。

詳細については、http: //logging.apache.org/log4net/release/manual/configuration.htmlを確認してください。

于 2012-12-13T15:24:11.387 に答える
-1

私は2つの方法を考えることができます:

本格的な展開プロセスを実行する必要なく、サーバー上のファイルを更新するだけの Web Deploy を使用します。

Azure インスタンスで RDP を有効にし、他のサーバーと同様に、ログインしてその場で構成ファイルを変更するだけです

于 2012-12-13T13:46:26.927 に答える