Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
禁用NHibernate日志记录_Nhibernate_Logging_Log4net - Fatal编程技术网

禁用NHibernate日志记录

禁用NHibernate日志记录,nhibernate,logging,log4net,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 ... 我尝试添加一个带有错误日志级别的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 ...
我尝试添加一个带有错误日志级别的log4net配置,但没有用。如何停止这些日志消息

我感到困惑的是,如果我有一个空的app.config,为什么这些会出现在第一位。我必须将其配置为不打印这些消息,这对我来说没有意义-默认设置应该是关闭的。可能是因为我的代码以某种方式通过编程设置了它们?我应该找什么?

可能会有帮助

您需要有两个记录器:

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

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

要禁用NHibernate级别或Log4Net级别的日志记录吗


我通过将“show_sql”变量设置为false来实现前者。我现在正在用C语言编程,但我认为这也很容易放入XML配置文件中。

您使用的是NUnit 2.4.6吗?我昨天读了一篇博客文章,上面说这个版本的NUnit将log4net设置为使用调试级日志记录,这也影响了NHibernate

如果不是NUnit,也不是您,我会检查您使用的是否是其他第三方库

编辑

仔细想想,我不认为输出与log4net有关。该格式看起来更像“show_sql”控制的输出。我要检查两件事: 1.如果将正确的(带有show_sql=false的)hibernate.config复制到您的执行目录中。
2.如果代码中未手动覆盖show_sql配置属性。

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


删除
.ShowSql()
对我来说很有效

对我来说这是NUnit的问题。在TeamCity中运行测试时发生了额外的日志记录,而TeamCity一定使用了不同版本的nunit

NHibernate日志对我帮助不大。。。我更喜欢这些设置:

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

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


不工作()。为什么默认情况下会显示SQL?可能是我的代码以某种方式把它打开了吗?只是去检查我的代码。我通过注释show_sql=true来关闭它。不要介意。抱歉。不工作,请参阅更新的问题(我添加了相应的log4net配置部分,没有效果)。log4net实际上匹配以指定名称开头的记录器名称,因此放置“NHibernate”将过滤掉所有NHibernate消息。我认为@Ripper的注释不正确,这对我很有效,对我也很有用ActiveRecord@ChrisS-我的评论没有错。这个答案对99%的人有效,但对我来说没有帮助。请看,在某些情况下,您可能必须将
additivity
属性设置为false才能获得您期望的结果,例如:
正如我们所看到的,真正的asnwer实际上是Log4NetApp的配置,它是nHibernate中的showsql……但是如果我想查看sql,而不是控制台中的sql,该怎么办?
    <logger name="NHibernate">
      <level value="OFF" />
    </logger>

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