单独的NHibernate.SQL空文件

单独的NHibernate.SQL空文件,nhibernate,log4net,Nhibernate,Log4net,我试图用以下配置将NHibernate的sql重定向到一个单独的文件,但没有成功。所有内容(使用SQL查询)都会转到主文件。 有人能帮忙吗 <log4net> <appender name="DebugSQL" type="log4net.Appender.FileAppender"> <param name="File" value="nhsql.log"/> <param name="AppendToFile" va

我试图用以下配置将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>


除了将SQL发送到单独的文件之外,根配置还将把所有内容发送到主附加器。如果您想阻止SQL显示在主日志文件中,您需要在log4net手册中搜索“filter”:这些应该在主appender的配置中。默认情况下,记录器继承其祖先中的所有appender。因此记录器
NHibernate.SQL
也将记录到根目录中的所有appender。您可以使用
可加性
属性来防止这种情况:

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

...

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

我刚刚测试过(正是您的设置)-它对我有用!没有问题这是因为它是从其他StackOverflow post获取的,所以应该可以工作。但奇怪的是,它对我不起作用现在有道理了。。。嗯,可能是这样的:文件
nh.log
被填充了,对吗?所以NHibernate已经就位了。在我的例子中,当我进入列表页面时,只有一条记录出现在
nhsql.log
-选择***。您可以检查(在分析器中…)是否确实生成了任何SQL…好的,我们有一些进展。我在Begging运行的模式重建似乎没有记录到DebugSQL var schema=new SchemaExport(Config);schema.Create(false,true);但是在你的建议之后,我接下来执行了一个查询,它被记录到DebugSQL和Main中。我现在可以按照奥斯卡·伯格伦的建议,在Main中添加一个过滤器,它会工作的。我对这个解决方案并不完全满意,但我可以接受。正如您所说:配置从一开始就可以工作,我们刚刚证明了它;)很高兴它现在为您工作!将过滤器添加到主附加器只能解决部分问题。我仍然无法让sql分离文件。这正是我实现这一点的方法。