2011-02-09 10 views
0

私はEntLib 5ロギングアプリケーションブロックをカプセル化しています。私は、ログに記録するたびに "IsLoggingEnabled()"を見てください。それがメソッドであってプロパティではないという事実は、それは実行するのに時間がかかる操作だと言いますが...ローカル変数にその値をキャッシュし、それを基にログするかどうかをチェックできますか? ?実行時にIsLoggingEnabled()を変更できますか?

乾杯。

答えて

1

Enterprise Library Documentのように、コードを使用してログ設定を変更することはできません。しかし、そこにもそれを読むことができます:

注:ログ アプリケーションブロックの構成に
ファイル名を指定して実行時間の変更は自動的に短い期間の後に検出 であり、 ログスタックが更新されますしかし、 は実行時にロギングスタックを変更することはできません time through code。 の詳細については、実行時に を更新することを参照してください。 時間に構成設定を更新してください。

つまり、プログラムでロギングを有効または無効にすることはできませんが、手動で構成を編集すると実行時に変更される可能性があります。

だからこそ、毎回IsLoggingEnabled()の操作にアクセスする必要があり、その値をキャッシュするのは良い考えではありません。

+0

です。 Web環境では、web.configを変更するたびにアプリがリセットされるため、問題はありません。しかし、Windowsのアプリケーションやサービスでは、あなたは値を変更することができ、それは問題を引き起こすだろう。私は正しい? – vtortola

+1

さて、それはそうです:http://msdn.microsoft.com/en-us/library/ff664640%28v=PandP.50%29.aspx "Windows Formsアプリケーションでは、アプリケーションを再起動して読み込みさせることができます新しい構成情報すべてWebフォーム(ASP.NET)アプリケーションは構成情報を検出して再読み込みしますが、ASP.NETの標準動作では構成ファイルを編集するとアプリケーションが再起動し、すべての状態がアプリケーションのために失われた。 –

+0

実行時にロギングスタックをコードで変更することはできませんが、実行時にロギングスタックを変更するコードによって実行時に構成を変更できます。 :) –

関連する問題