2015-04-28 38 views
0

如果我打開show_sql,然後NHibernate記錄其查詢,這是我想看到的。但是,我的應用程序是一個控制檯程序,並且打開show_sql會導致SQL出現在控制檯中,無論如何。我不想在控制檯中看到它,但只能在文件中看到它。如何讓NHibernate記錄文件,而不是控制檯?

注意:我使用log4net來控制日誌記錄。

對此問題的任何建議或指導表示讚賞。

回答

0

我們可以用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

相關問題