log4net中的NHibernate.SQL始终登录DEBUG

时间:2013-10-01 08:44:53

标签: c# .net nhibernate logging log4net

我有以下问题 - 看起来log4net在记录器配置中忽略了NHibernate.SQL并始终登录DEBUG。

如果我将记录器名称更改为NHibernate,它可以正常工作,只记录大于或等于级别的消息。

这是我的配置:

<?xml version="1.0" encoding="utf-8" ?>
<log4net> 
  <appender name="console" type="log4net.Appender.ConsoleAppender">    
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="[%logger] %-5p %m%n" />
    </layout>
  </appender>
  <logger name="NHibernate.SQL" additivity="false">
    <level value="INFO" />
    <appender-ref ref="console" />
  </logger>
</log4net>

使用此配置,我得到以下输出:

[NHibernate.SQL] DEBUG Reading high value:select next_hi from hibernate_unique_key with (updlock, rowlock)
[NHibernate.SQL] DEBUG Updating high value:update hibernate_unique_key set next_hi = @p0 where next_hi = @p1;@p0 = 247 [Type: Int64 (0)], @p1 = 246 [Type: Int64 (0)]

NHibernate.config

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>

  <property name="connection.connection_string">XXX</property>
    <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="show_sql">false</property>
    <property name="connection.release_mode">auto</property>
    <property name="adonet.batch_size">500</property>

  </session-factory>
</hibernate-configuration>

1 个答案:

答案 0 :(得分:1)

问题在于代码使用了NHibernate Profiler。调用NHibernateProfiler.Initialize会导致一些记录器被设置为DEBUG级别 - 特别是NHibernate.SQL。

对不起,我没有提供足够的细节 - 我正在使用内部公司框架,我不知道所有细节。