使用Log4net调试NHibernate

摘录:

使用Log4net调试NHibernate

如果是Asp.net程序,首先配置web.config文件:

<?xml version="1.0"?>
<configuration>
  <!-- Add this element -->
  <configSections>
  <section  name="hibernate-configuration"  type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
  <section type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>
  <!-- Add this element -->
  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
      <property >NHibernate.Dialect.MsSql2000Dialect</property>
      <property >NHibernate.Connection.DriverConnectionProvider</property>
      <property >
        Server=(local);initial catalog=nhibernate;Integrated Security=SSPI
      </property>
      <property >true</property>
      <mapping assembly="Model" />
    </session-factory>
  </hibernate-configuration>
<log4net>

    <root>
      <!--如果只需要看看Sql设置INFO就够了,如果你要调试可以设置为DEBUG或ALL-->
      <priority value="DEBUG" />
      <appender-ref ref="rollingFile" />
    </root>

    <logger >
      <level value="ALL" />
      <appender-ref ref="rollingFile1" />
    </logger>

    <appender type="log4net.Appender.RollingFileAppender,log4net" >

      <param value="c:\log.txt" />
      <param value="false" />
      <param value="Date" />
      <param value="yyyy.MM.dd" />
      <param value="true" />

      <layout type="log4net.Layout.PatternLayout,log4net">
        <param value="%d [%t] %-5p %c [%x] <%X{auth}> - %m%n" />
      </layout>
    </appender>

    <appender type="log4net.Appender.RollingFileAppender,log4net" >

      <param value="c:\Applog.txt" />
      <param value="false" />
      <param value="Date" />
      <param value="yyyy.MM.dd" />
      <param value="true" />

      <layout type="log4net.Layout.PatternLayout,log4net">
        <param value="%d [%t] %-5p %c [%x] <%X{auth}> - %m%n" />
      </layout>
    </appender>

  </log4net>
</configuration>

以上配置文件 你可以实现让 NHibernate 的调试信息记录在 log.txt 文件中, 因为NHibernate总是会调用配置<root>里面的“appender-ref”来写配置。让系统本身的记录日志保存在Applog.txt文件中,而不让NHibernate的日志影响.

具体程序代码:

 void Application_Start(object sender, EventArgs e) 
    {
        // 在应用程序启动时运行时加载log4net的配置文件
        log4net.Config.DOMConfigurator.Configure();
    }

假如有个 _default.aspx 页面, 在此页面中定义两个变量:

private static readonly ILog log = LogManager.GetLogger(typeof(_Default)); 

//自动记录本页面的NHibernate调试信息

private static readonly ILog applicationInfoLog = LogManager.GetLogger("ApplicationInfoLog");
//记录系统应用程序日志记录

 protected void Page_Load(object sender, EventArgs e)
 {    

        applicationInfoLog.Info("系统日志");

        applicationInfoLog.Debug("这是我在使用Log4Net");

  }


想看生成的sql语句:(在log.txt中查看黄色字体部分)

2009-09-23 23:47:24,828 [4] DEBUG NHibernate.SQL [(null)] <(null)> - DELETE FROM Users WHERE @p0 = '100'

2009-09-23 23:47:24,875 [4] DEBUG NHibernate.SQL [(null)] <(null)> - INSERT INTO Users (name, id) VALUES (@p0, @p1); @p0 = 'chy4', @p1 = '100'

posted @ 2014-07-01 17:13  有时  阅读(218)  评论(0编辑  收藏  举报