He configurado NHibernate para dar salida a sus sentencias SQL a la ventana de Visual Studio de salida usando el siguiente código de configuración:¿nHibernate ShowSql tendrá algún efecto en un sistema en vivo?
var configuration = Fluently.Configure(cfg)
.Database(
MsSqlConfiguration.MsSql2005
.ConnectionString(connectionString)
.DefaultSchema("dbo")
.UseReflectionOptimizer()
.AdoNetBatchSize(32)
.ShowSql()
y en mi 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>
tendrá esto cualquier actuación impacto en el sistema en vivo? El nivel de registro en el sistema en vivo es ERROR, así que supongo que eso significa que el registrador no se encenderá, pero ¿seguirá agotándose la configuración de ShowSql en mi nHibernate?
Gracias, eso tiene mucho sentido. Nuestro sistema usa una configuración fluida, así que he decidido agregar un # if DEPURACIÓN para determinar si agregar el .ShowSql. No puedo pensar en una forma más elegante de hacerlo. – kasey
la respuesta de cremor es correcta: show_sql solo inicia sesión en stdout, no es la forma de registro. –
Además, escribir en stdout en una aplicación de subprocesos múltiples puede crear problemas de condición de carrera: http://stackoverflow.com/questions/12638810/nhibernate-race-condition-when-loading-entity – Vitaliy