それは達成することは実際には非常に簡単です、ちょうど次の手順を実行します。別のファイルに
置きエンタープライズライブラリの設定を
<configuration>
<configSections>
<section name="enterpriseLibrary.ConfigurationSource" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ConfigurationSourceSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>
<enterpriseLibrary.ConfigurationSource selectedSource="EntLib Config">
<sources>
<add name="EntLig Config" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
filePath="EntLib.config" />
</sources>
</enterpriseLibrary.ConfigurationSource>
</configuration>
ログフィルタを追加します。ログエントリの優先度またはカテゴリを使用してログエントリをフィルタリングすることができます。そのため、コードで優先度またはカテゴリを適切に設定する必要があります。たとえば、1のように、非常に重要なメッセージと優先度の低い番号を与えたい、そしてより詳細なメッセージは無視され、実行時にエンタープライズライブラリの設定に加えた10
<configuration>
...
<loggingConfiguration name="Logging Application Block" tracingEnabled="true"
defaultCategory="General" logWarningsWhenNoCategoriesMatch="true">
...
<logFilters>
<add minimumPriority="1" maximumPriority="10" type="Microsoft.Practices.EnterpriseLibrary.Logging.Filters.PriorityFilter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
name="Priority Filter" />
...
</loggingConfiguration>
</configuration>
の変更可能性が - に加えられた変更を除きますロギングアプリケーションブロック。 MSDNのこの記事を参照してください。Updating Configuration Settings at Run-time
フィルター値を切り替える簡単なヘルパーメソッドを実装しました。より詳細なメッセージが必要な場合は、最大優先度値を増やしてこれらのエントリを登録できます。私は唯一の例外または他の非常に重要なメッセージをログに記録するとき同様に、私は1
に0に優先度の範囲を設定する
var path = System.IO.Path.Combine(Environment.CurrentDirectory, "EntLib.config");
var xd = XDocument.Load(path);
var x = (from z in xd.Root.Elements("loggingConfiguration").Elements("logFilters").Elements() where (z.Attribute("name").Value == "Priority Filter") select z).SingleOrDefault();
x.Attribute("minimumPriority").Value = 1; // Change this value...
x.Attribute("maximumPriority").Value = 5; // ... and this one to specify the range you want to log.
xd.Save(path);
これは、web.configファイルとしてあなたのサービスをリロードすることなく、エンタープライズライブラリロギング機能を変更します決して触れられません。欠点は、ログエントリの優先順位付け/分類のような種類の慣習を使用する必要があることだけです。
更新疑問 - 私は24/7のサーバアプリを書いて、それが再起動すると同じように、設定の書き換えでは発生しません –
を再起動せずにトラブルシューティングの目的のために、様々な分野でのログを「アップバンプ」したいと思います。ステート・サーバーにSQLを使用している場合は大したことではありませんが、要求の途中で人を悩ますことがあります。私は、あなたがそこに付けることができるように、コードベースを見るか、ログウィンドウサービスを構築することを検討します。 –