流利的NHibernate和log4net

时间:2012-02-01 11:44:08

标签: nhibernate fluent-nhibernate log4net

虽然关于这个主题有很多问题和答案,但我无法找到问题的答案。我已经为NHibernate配置了log4net,如下所述:http://nhibernate.hibernatingrhinos.com/19/how-to-configure-log4net-for-use-with-nhibernate

唯一的区别是我将log4net配置为跟踪追加器使用:

<appender name="trace" type="log4net.Appender.TraceAppender, log4net">
    <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d %p %m%n" />
    </layout>
</appender>
....
    <logger name="NHibernate" additivity="false">
        <level value="ALL"/>
        <appender-ref ref="trace"/>
    </logger>
    <logger name="NHibernate.SQL" additivity="false">
        <level value="ALL"/>
        <appender-ref ref="trace"/>
    </logger>

然后,我得到了我的NHibernate日志记录。但是,我没有看到任何生成的SQL查询,这是我希望看到的。我确实记录了会话的打开和关闭,提交事务等。但是查询没有发送到数据库。有谁知道我在忽视什么?

我正在使用Fluent NHibernate 1.2,它使用NHibernate 3.1。我在配置中启用了ShowSql()

2 个答案:

答案 0 :(得分:0)

尝试在流畅的NH配置中将AdoNetBatchSize设置为零:

Fluently
  .Configure()
  .Database(...) 
  .AdoNetBatchSize(0) 

答案 1 :(得分:0)

尝试从两个appender中删除additivity="false"。要么是NHibernate.SQL,要么使用不同的appender。在这种情况下,将它们都设置为false并不合理。

如果你想将sql查询与常规的nhibernate日志记录分开,那么这有意义 IF 你正在使用不同的appender。

http://logging.apache.org/log4net/release/sdk/log4net.Repository.Hierarchy.Logger.Additivity.html