禁用NHibernate日志记录

时间:2009-09-23 18:24:12

标签: nhibernate logging log4net

我有一个 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,那么为什么这些出现在第一位。对我来说没有意义,我必须配置它不打印这些消息 - 默认应该关闭。可能是我的代码以某种方式以编程方式设置它们吗?我应该寻找什么?

7 个答案:

答案 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配置属性。