NHibernate框架使用时,经常需要跟踪SQL脚本,牛X的工具当然就是 NHProfAppender了,不过网上对这个工具的使用方法说的不多,俺在这里备注下,希望能帮助那些还不清楚的朋友们。
1 下载引用
我这里整理了一份:http://download.csdn.net/detail/xz2001/5010939
下载后解压到一个固定目录,相当于一个绿色软件来使用,然后在你的项目中引用如下两个DLL:
HibernatingRhinos.Profiler.Appender.dll
HibernatingRhinos.Profiler.Appender.NHibernateLog4Net.dll
2 配置log4net
NHProfAppender 配置要用到log4net,如果对log4net不清楚请看下这篇:http://blog.csdn.net/xz2001/article/details/8450548
很简单,看下我的配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net>
<appender name="NHProfAppender" type="HibernatingRhinos.Profiler.Appender.NHibernate.NHProfAppender, HibernatingRhinos.Profiler.Appender.NHibernateLog4Net">
<sink value="http://localhost:8010"/>
</appender>
<appender name="LogFile" type="log4net.Appender.FileAppender,log4net">
<param name="File" value="Logs\\error.log"/>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
</layout>
</appender>
<root>
<level value="ERROR" />
<appender-ref ref="LogFile" />
<appender-ref ref="NHProfAppender"/>
</root>
</log4net>
</configuration>
注意看第7、8(修改成你项目的URL)、9行和19行,这是配置的重点,其他的是日志文件配置。
3 设置log4net配置文件路径
我的log4net配置文件放这里: Config/log4net.xml,这里需要修改两处:
在 AssemblyInfo.cs 文件最后一行加入:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Config\\log4net.xml", Watch = true)]
在 Global 中的Start事件中类似这样:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("Config/log4net.xml"));
HibernatingRhinos.Profiler.Appender.NHibernate.NHibernateProfiler.Initialize();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
这里要注意一下,如果你的框架中使用Spring.NET框架,第4行是必须的“
log4net.Config.XmlConfigurator.Configure(new FileInfo("log4net_config.xml"));”,没有用Spring.NET的话可以没有,这个我仅在自己的项目环境中测试,如果在使用时遇到问题,可以留意下这个问题。
4 使用方法
先到NHProfAppender解压目录中运行“NHProf.exe”,然后在浏览器里访问你的Web项目,切回NHProfAppender看下,有了吧。
很简单,只是配置的时候要注意一下,另外,同一个HTTP请求可能有多个Session;还有,多次访问产生太多的Session找起来可能有些麻烦,可以点击右键把之前访问的Session清除,重新请求后再检查。