【发布时间】:2014-08-21 06:38:26
【问题描述】:
我正在从事一个由其他人完成的非常大的项目。这段代码中有很多项目,它使用 NHibernate 作为 ORM。数据库非常繁忙,所以我正在尝试诊断它慢的地方并尝试诊断整个系统流程。
我做过的一件事是为 NHibernate.SQL 添加一个 log4net,它将所有正在运行的查询输出到一个日志文件:
<logger name="NHibernate.SQL" additivity="false">
<level value="ALL" />
<appender-ref ref="NHibernateSQLAppender" />
</logger>
这是附加程序:
<appender name="NHibernateSQLAppender" type="log4net.Appender.RollingFileAppender">
<file value="NHibernateSQL.txt"></file>
<appendToFile value="true"></appendToFile>
<maximumFileSize value="15MB"></maximumFileSize>
<maxSizeRollBackups value="10"></maxSizeRollBackups>
<rollingStyle value="Size"></rollingStyle>
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] [%line] %-5p %c [%x] <%X{auth}> - %m%n"></param>
</layout>
</appender>
在日志文件中,我看到一个在短时间内运行多次的查询,我想找到运行它的代码。我能够通过表名和映射到的类找到 hbm 文件。
我搜索了对该类的引用 - 但有很多。
所以我的基本问题是如何找到运行该特定查询的代码?这有可能吗?
谢谢
【问题讨论】:
-
您是否尝试将堆栈跟踪添加到附加布局? - stackoverflow.com/questions/9319810/…
-
您可以在模式中使用
%stacktrace{level}:stackoverflow.com/a/9319894/1619238
标签: c# nhibernate