我有一个空 app.config文件,但我仍然得到NHibernate调试日志
NHibernate: SELECT this_.LogID as LogID71_0_, this_.Level as Level71_0_, this_.Message as Message71_0_, this_.EventTime as EventTime71_0_, this_.Component as ...
我尝试添加一个带有ERROR日志级别的log4net配置,但没有用。如何停止这些日志消息?
我很困惑的是,如果我有一个空的app.config,那么为什么这些出现在第一位。对我来说没有意义,我必须配置它不打印这些消息 - 默认应该关闭。可能是我的代码以某种方式以编程方式设置它们吗?我应该寻找什么?
答案 0 :(得分:84)
Configure Log4Net for use with NHibernate可能会有所帮助。
您需要同时拥有这两种记录器:
<logger name="NHibernate">
<level value="ERROR" />
</logger>
<logger name="NHibernate.SQL">
<level value="ERROR" />
</logger>
答案 1 :(得分:13)
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005.ConnectionString(
c => c.FromConnectionStringWithKey("MyDB")).ShowSql())
删除.ShowSql()
为我工作
答案 2 :(得分:6)
问题出在“我的代码”中。我们手动构建NHibernate配置(将show_sql标志设置为true)。
答案 3 :(得分:3)
NHibernate日志对我帮助不大......我更喜欢这些设置:
<logger name="NHibernate">
<level value="OFF" />
</logger>
<logger name="NHibernate.SQL">
<level value="OFF" />
</logger>
答案 4 :(得分:2)
对我来说这是NUnit问题。在TeamCity中运行测试时发生了额外的日志记录,这些测试必须使用不同版本的nunit
答案 5 :(得分:1)
是否要禁用NHibernate级别或Log4Net级别的日志记录?
我通过将“show_sql”变量设置为false来完成前者。我现在正在C#中以编程方式执行此操作,但我认为这也很容易放入XML配置文件中。
答案 6 :(得分:0)
您使用的是NUnit 2.4.6吗?我昨天阅读了this博客文章,其中说这个版本的NUnit将log4net设置为使用DEBUG级别日志记录,同时影响NHibernate。
如果它不是NUnit并且不是你,我会检查它是否是你正在使用的其他第三方库。
修改强>
第二个想法,我不认为输出与log4net有关。格式看起来更像是“show_sql”受控输出。我会检查两件事: 1.如果正确(具有show_sql = false的那个)hibernate.config被复制到您的执行目录。 2.如果未在代码中手动覆盖show_sql配置属性。