3

最近、アプリケーションに log4net を追加しました。やや奇妙に感じたのは、<configSections>タグ ブロックの前にタグ ブロックを配置しなければならなかったこと<startup>です。そうしないと、最初に行ったデータベース呼び出しで本当に奇妙な例外が発生しました。これには何か理由があると思いますが、かなり奇妙に思えます。

これは実際の例です:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>


  <log4net debug="false">
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <param name="File" value="Logs\log.txt"/>
      <param name="AppendToFile" value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <!--<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt; - %m%n"/>-->
        <conversionPattern value="%date - %-5level- %message%newline" />
      </layout>
    </appender>
    <root>
      <priority value="ALL"/>
      <appender-ref ref="LogFileAppender"/>
    </root>
    <category name="testApp.LoggingExample">
      <priority value="ALL"/>
    </category>
  </log4net>
4

1 に答える 1

4

一般に、セクションの順序は重要ではありません。最初にする必要があるのはconfigSections要素だけです。

MSDN から:

configSections要素が構成ファイル内にある場合、configSections要素は構成要素の最初の子要素である必要があります。

これは、セクションを使用する前にセクションを宣言する必要があるためだと思います。

于 2013-06-12T19:42:34.050 に答える