单独的NHibernate.SQL空文件

时间:2012-11-10 15:46:07

标签: nhibernate log4net

我正在尝试将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>

3 个答案:

答案 0 :(得分:2)

默认情况下,记录器会继承其祖先中的所有appender。因此记录器NHibernate.SQL也将记录到根目录中的所有appender。您可以使用additivity属性阻止此操作:

<logger name="NHibernate.SQL" additivity="false" >
...
</logger>

答案 1 :(得分:0)

除了将SQL发送到单独的文件之外,root配置将把所有内容发送到Main appender。如果要阻止SQL显示在主日志文件中,则需要在log4net手册中搜索“filter”:http://logging.apache.org/log4net/release/manual/configuration.html这些应该包含在主appender的配置中。

答案 2 :(得分:0)

看起来只有初始SQL语句(创建表等)没有记录到单独的文件中。其他一切都是。所以我想它必须是这样的,这种配置是可以的。谢谢大家的帮助。