使用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‘
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。