2009-09-23 27 views
48

我有一个 app.config文件,但我仍然得到NHibernate的调试日志禁止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 ... 

我尝试添加一个log4net的配置有错误日志级别,但没有用。我怎样才能停止这些日志消息?

我感到困惑的是为什么这些出现在第一个地方,如果我有一个空的app.config。对我来说,我必须将其配置为不打印这些消息,这是没有意义的 - 应该关闭默认设置。难道它是我的代码设置他们以编程方式莫名其妙?我应该寻找什么?

+0

作为我们可以看到,真正的asnwer实际上是log4net – 2012-05-22 14:35:32

+1

的配置,它是nHibernate中的showsql .... – Dani 2014-12-31 07:49:15

回答

80

Configure Log4Net for use with NHibernate可能是有帮助的。

你需要有这两个记录器:

<logger name="NHibernate"> 
    <level value="ERROR" /> 
</logger> 

<logger name="NHibernate.SQL"> 
    <level value="ERROR" /> 
</logger> 
+1

不工作,查看更新的问题(我添加了相应的log4net配置部分,没有影响)。 – ripper234 2009-09-23 18:42:46

+3

log4net实际上匹配以指定名称开头的记录器名称,因此将“NHibernate”过滤掉每个NHibernate消息。 – 2010-07-20 11:47:36

+0

我认为@开膛手的评论是不正确的,这对我和ActiveRecord – 2010-12-17 14:35:01

1

你想在NHibernate的水平或log4net的水平,以禁用日志记录?

我在做前者,将“show_sql”变量设置为false。我现在正在用C#编程,但我认为这很容易放入XML配置文件中。

+0

不工作(http://www.beansoftware.com/asp.net-tutorials/nhibernate-log4net.aspx)。为什么默认是显示SQL? 难道它是我的代码以某种方式务实? – ripper234 2009-09-23 18:38:17

+0

刚去,检查我的代码。我通过评论show_sql = true来关闭它。没关系。抱歉。 – 2009-09-23 18:42:20

+0

谢谢为我工作。 – Jonathan 2012-08-21 09:03:53

0

你使用的是NUnit 2.4.6吗?我昨天读了this博客文章,其中说这个版本的NUnit设置log4net使用DEBUG级别的日志记录,也影响NHibernate。

如果它不是NUnit,它不是你,我会检查它是否是你正在使用的其他第三方库。

编辑

关于第二个想法,我不认为输出有事情做与log4net的。该格式看起来更像是“show_sql”控制的输出。我会检查两件事: 1.如果正确的(具有show_sql = false的)hibernate.config复制到执行目录。 2.如果在代码中未手动覆盖show_sql配置属性。

6

问题出在“我的代码”的某处。我们手动构建NHibernate配置(将show_sql标志设置为true)。

12
return Fluently.Configure() 
      .Database(MsSqlConfiguration.MsSql2005.ConnectionString(
       c => c.FromConnectionStringWithKey("MyDB")).ShowSql()) 

卸下.ShowSql()工作对我来说

+0

这解决了我的问题,谢谢! – 2011-09-28 11:27:16

+0

但是,如果我想看到SQL,但不是在控制台? – 2012-05-23 08:46:16

2

对我来说是NUnit的问题。运行必须已经使用不同版本的NUnit在TeamCity的测试时

2

NHibernate的日志不帮我多少额外的记录发生的一切......我喜欢这些设置好:

<logger name="NHibernate"> 
     <level value="OFF" /> 
    </logger> 

    <logger name="NHibernate.SQL"> 
     <level value="OFF" /> 
    </logger>