Common.Logging.Log4net を使用するアプリケーションに次の app.config があります (例を簡略化するためにいくつかの部分を省略しています)。
<configuration>
<configSections>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
...
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net1211">
<arg key="configType" value="INLINE" />
</factoryAdapter>
</logging>
</common>
<log4net>
<appender ...
<root>
<level value="INFO" />
</root>
...
</log4net>
アイデアは、Common Logging ランタイムが log4net を自動的に (アセンブリ属性なしで) 構成できるようにし、固有のファイルを使用してこの構成を持つようにすることです。これはアプリケーションのapp.configです。
ただし、この INLINE configType では、アプリケーションの実行中に app.config をオンザフライで変更してロギング構成を更新することはできません。これは、この動作が FILE-WATCH configType によって実現されるためです。
だから私はしたい:
- 構成ファイルは 1 つだけです (私のアプリケーションの app.Config)
- log4net を構成するために、Assembly Attribute を AssemblyInfo に含める必要はありません
- アプリケーションの実行時に app.Config の log4net セクション (例: root ログ レベルの値) を変更し、app.config を変更すると、アプリケーションがログ構成を自動的に更新するようにします。
Common Logging + Log4net を使用してこれらの要件を満たすにはどうすればよいでしょうか?