虽然关于这个主题有很多问题和答案,但我无法找到问题的答案。我已经为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()
。
答案 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