0
如果我打開show_sql
,然後NHibernate
記錄其查詢,這是我想看到的。但是,我的應用程序是一個控制檯程序,並且打開show_sql
會導致SQL出現在控制檯中,無論如何。我不想在控制檯中看到它,但只能在文件中看到它。如何讓NHibernate記錄文件,而不是控制檯?
注意:我使用log4net來控制日誌記錄。
對此問題的任何建議或指導表示讚賞。
如果我打開show_sql
,然後NHibernate
記錄其查詢,這是我想看到的。但是,我的應用程序是一個控制檯程序,並且打開show_sql
會導致SQL出現在控制檯中,無論如何。我不想在控制檯中看到它,但只能在文件中看到它。如何讓NHibernate記錄文件,而不是控制檯?
注意:我使用log4net來控制日誌記錄。
對此問題的任何建議或指導表示讚賞。
我們可以用log4net的和它的一些附加目的地(即文件的appender像RollingFileAppender
)跟蹤NHibernate的(包括生成的SQL)
有一個詳細的如何:
Configure Log4Net for use with NHibernate
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="c:\Logs\myLog.log" />
<layout type="log4net.Layout.PatternLayout">
<ConversionPattern value="[%-3d|%-4t|%-5p|%-75c] %m | %-10u %n" />
</layout>
<appendToFile value="true" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="2" />
</appender>
...
然後聲明記錄器
<logger name="NHibernate">
<level value="WARN" />
<appender-ref ref="RollingFileAppender" />
</logger>
<logger name="NHibernate.SQL">
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</logger>
注意:這裏,我們沒有使用配置設置<property name="show_sql">false</property>
。我們只跟蹤log4net