我已经配置了NHibernate的输出它的SQL语句使用下面的配置代码在Visual Studio输出窗口:nHibernate ShowSql会对现场系统产生什么影响吗?
var configuration = Fluently.Configure(cfg)
.Database(
MsSqlConfiguration.MsSql2005
.ConnectionString(connectionString)
.DefaultSchema("dbo")
.UseReflectionOptimizer()
.AdoNetBatchSize(32)
.ShowSql()
和我的web.config:
<appender name="NHibernateFileLog" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" />
</layout>
</appender>
<logger name="NHibernate.SQL" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="NHibernateFileLog"/>
</logger>
这会不会有什么表现对现场系统的影响?实时系统上的日志级别为ERROR,所以我想这意味着日志记录程序不会打开,但是我的nHibernate配置中的ShowSql是否仍会占用资源?
谢谢,这很有道理。我们的系统使用流利的配置,所以我决定添加一个#if DEBUG来决定是否添加.ShowSql。想不到更优雅的做法。 – kasey 2012-02-21 10:45:41
cremor答案是正确的:show_sql只是登录到stdout,它不是记录器的方式。 – 2012-02-21 14:13:37
此外,写入多线程应用程序中的stdout可能会产生竞争条件问题:http://stackoverflow.com/questions/12638810/nhibernate-race-condition-when-loading-entity – Vitaliy 2015-12-24 12:16:59