Per abilitare il logging delle query con NHibernate occorre:
<configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections> <log4net> <appender name="console" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%-5p - %m%n" /> </layout> </appender> <logger name="NHibernate.SQL" additivity="false"> <level value="ALL"/> <appender-ref ref="console" /> </logger> <root> <priority value="WARN" /> <appender-ref ref="console" /> </root> </log4net></configuration>
Con questa configurazione si usa il console appender, per un’applicativo web potrebbe essere meglio usare un TraceAppender o un altro appender di proprio gusto
Possiamo configurare log4net dall’ applicativo, con un paio di linee di codice:
1: TraceAppender app = new TraceAppender();
2: app.Layout = new SimpleLayout();
3: LoggerMatchFilter filter = new LoggerMatchFilter();
4: filter.LoggerToMatch="NHibernate.SQL";
5: filter.AcceptOnMatch = true;
6: filter.ActivateOptions();
7: app.AddFilter(filter); // L'ordine di questo filtro
8: app.AddFilter(new DenyAllFilter()); // e di quest'altro E' importante
9: app.ActivateOptions();
10: BasicConfigurator.Configure( app);
In questo caso si possono saltare gli step da 1 a 3. Questo codice deve essere chiamato una volta nell’applicazione in fase di startup, per un’applicazione web, potrebbe andare bene l’evento di startup dell'applicazione in global.asax. Con l’appender e i filtri configurati si ottiene nell'area trace di Visual Studio ( Output-tab Debug) l’output delle sole query generate da NH ( senza gli altri logger, se servono si possono togliere i filtri )
Remember Me
a@href@title, b, strike, strong
E-mail
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.