如果我打开function TServerMethods1.UTF8TEST(Value: string): string;
var metaData: TDSInvocationMetadata;
output: String;
begin
metaData:= GetInvocationMetadata;
output:= '<element><inside name="skúška" /></element>';
metaData.ResponseCode:= 200;
metaData.ResponseContentType:= 'text/xml; charset=utf-8';
metaData.ResponseContent:= utf8encode(output);
end;
,则show_sql
会记录其查询,这是我想要查看的内容。但是,我的应用程序是一个控制台程序,打开NHibernate
会导致SQL出现在控制台中,无论如何。我不想在控制台中看到它,只在文件中看到它。
注意:我使用log4net来控制日志记录。
对此问题的任何建议或指导表示赞赏。
答案 0 :(得分:0)
我们可以使用log4net及其一些appender (即文件appender,如hello + $this->session->userdata('user')
)来跟踪NHibernate (包括生成的SQL)
详细介绍了如何:
Configure Log4Net for use with NHibernate
RollingFileAppender
然后声明记录器
<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>
。我们只跟踪log4net