管理者は、構成で LogEnabledFilter の有効なプロパティを変更して、実行時のログ記録を有効/無効にする必要があります。
SO には回避策を説明するスレッドがいくつかありますが、私はこのようにしたいと考えています。Logging Enabled Filter を次のように変更しようとしました。
private static void FileConfigurationSourceChanged(object sender, ConfigurationSourceChangedEventArgs e)
{
var fcs = sender as FileConfigurationSource;
System.Diagnostics.Debug.WriteLine("----------- FileConfigurationSourceChanged called --------");
LoggingSettings currentLogSettings = e.ConfigurationSource.GetSection("loggingConfiguration") as LoggingSettings;
var fdtl = currentLogSettings.TraceListeners.Where(tld => tld is FormattedDatabaseTraceListenerData).FirstOrDefault();
var currentLogFileFilter = currentLogSettings.LogFilters.Where(lfd => { return lfd.Name == "Logging Enabled Filter"; }).FirstOrDefault();
var filterNewValue = (bool)currentLogFileFilter.ElementInformation.Properties["enabled"].Value;
var runtimeFilter = Logger.Writer.GetFilter<LogEnabledFilter>("Logging Enabled Filter");
runtimeFilter.Enabled = filterNewValue;
var test = Logger.Writer.IsLoggingEnabled();
}
ただし、テストでは常に最初にロードされた構成値が明らかになり、変更されません。構成の値を変更すると、変更がランタイム構成に自動的に反映されると思いました。しかし、そうではありません!上記のコードに示すようにプログラムで設定しても機能しません。
Enterprise Library を再構築するか、シャットダウンする時が来ました。