Ho configurato NHibernate per emettere le sue istruzioni SQL per la finestra di Visual Studio di output utilizzando il seguente codice di configurazione:WillHibernate ShowSql ha qualche effetto su un sistema live?
var configuration = Fluently.Configure(cfg)
.Database(
MsSqlConfiguration.MsSql2005
.ConnectionString(connectionString)
.DefaultSchema("dbo")
.UseReflectionOptimizer()
.AdoNetBatchSize(32)
.ShowSql()
e nel mio 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>
avrà questo ogni performance impatto sul sistema live? Il livello di log sul sistema live è ERROR, quindi suppongo che ciò significhi che il logger non sarà acceso, ma lo ShowSql nella mia configurazione di NHibernate utilizzerà ancora risorse?
Grazie, ha molto senso. Il nostro sistema utilizza una configurazione fluente, quindi ho deciso di aggiungere un # DEBUG #if per determinare se aggiungere .ShowSql. Non riesco a pensare a un modo più elegante di farlo. – kasey
la risposta del cremore è corretta: show_sql è sufficiente accedere allo stdout, non è la modalità di registrazione. –
Inoltre, la scrittura su stdout in un'applicazione multi-thread può creare problemi di race condition: http://stackoverflow.com/questions/12638810/nhibernate-race-condition-when-loading-entity – Vitaliy