这个问题与Intercept SQL statements containing parameter values generated by NHibernate几乎相同,但到目前为止还没有答案。
Public Class SqlStatementInterceptor
Inherits EmptyInterceptor
Implements IInterceptor
Public Overrides Function OnPrepareStatement(sql As SqlString) As SqlString
Debug.WriteLine(String.Format("{0} - {1}", DateTime.Now, sql.ToString()))
Return sql
End Function
End Class
我可以捕获SQL语句,但似乎无法获取参数。有人试图实现吗?
答案 0 :(得分:4)
您需要编写log4net appender。这就是NHProf获取信息的方式。还有一个名为NHibernate 3.0 SQL Logger的codeplex项目使用了这种技术。
答案 1 :(得分:1)
您可以将log4net
与TraceAppender
一起使用,并在配置中使用format_sql=true
属性以帮助提高可读性。要使用的记录器是NHibernate.SQL
。