1

NHibernateのSQLを次の構成の別のファイルにリダイレクトしようとしていますが、成功しません。すべて(SQLクエリを含む)がメインファイルに送られます。誰かが助けることができますか?

 <log4net>
    <appender name="DebugSQL" type="log4net.Appender.FileAppender">
      <param name="File" value="nhsql.log"/>
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern
          value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <appender name="Main" type="log4net.Appender.FileAppender">
      <param name="File" value="nh.log"/>
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern
          value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>

    <logger name="NHibernate.SQL">
      <level value="ALL" />
      <appender-ref ref="DebugSQL" />
    </logger>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="Main" />
    </root>

  </log4net>
4

3 に答える 3

2

デフォルトでは、ロガーは祖先のすべてのアペンダーを継承します。したがって、ロガーNHibernate.SQLはルートルージャー内のすべてのアペンダーにもログを記録します。additivity次の属性でこれを防ぐことができます。

<logger name="NHibernate.SQL" additivity="false" >
...
</logger>
于 2012-11-11T01:19:59.077 に答える
0

そのルート構成は、SQLを別のファイルに送信するだけでなく、すべてをメインアペンダーに送信します。SQLがメインログファイルに表示されないようにする場合は、log4netマニュアルで「filter」を検索する必要があります。http ://logging.apache.org/log4net/release/manual/configuration.htmlメインアペンダーの構成内に入ります。

于 2012-11-11T01:07:38.137 に答える
0

最初のSQLステートメント(テーブルの作成など)のみが別のファイルに記録されていないようです。他のすべてはです。ですから、そのようにする必要があり、この構成は問題ないと思います。助けてくれてありがとう。

于 2013-08-18T08:39:37.417 に答える