如何使用NHibernate将SQL调用logging到Visual Studio的控制台?

我有NHibernate的以下configuration文件:

<?xml version="1.0" encoding="utf-8" ?> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name="connection.connection_string">Server=.\SQLEXPRESS;Database=mydb;Integrated Security=True;</property> <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property> <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property> <property name="connection.release_mode">auto</property> <property name="adonet.batch_size">500</property> <property name="show_sql">true</property> </session-factory> </hibernate-configuration> 

但是SQL不显示在Visual Studio的输出窗口中。 是否必须安装log4net ? 还是应该show_sql独自工作?

要在Visual Studio的输出窗口中显示SQL,请在log4netconfiguration中将log4netconfiguration为使用TraceAppender。 这个:

 <appender name="DebugSQL" type="log4net.Appender.TraceAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> 

那么这个:

 <logger name="NHibernate.SQL" additivity="false"> <level value="DEBUG" /> <appender-ref ref="DebugSQL" /> </logger> 

编辑:我似乎无法正确格式化在这里。 请参阅此链接的代码示例

对于那些喜欢代码而不是configuration的人来说,下面的代码片断会用一个简单的控制台appender来创build合适的NHlogging器。

 var hierarchy = (Hierarchy) LogManager.GetRepository(); var logger = (Logger) hierarchy.GetLogger("NHibernate.SQL"); logger.AddAppender(new ConsoleAppender {Layout = new SimpleLayout()}); hierarchy.Configured = true; 

show_sql输出到Console.Out – 这在运行集成testing时非常有用

有一个叫做NHibernate profiler的东西可以使用。

http://nhprof.com/

它是昂贵的,但它的工作,并有30天的审判。

由于NHibernate 3.0你可以使用loquaciousconfiguration

 configuration.DataBaseIntegration(x => { x.LogSqlInConsole = true; x.LogFormattedSql = true; }); 

其他信息请访问http://fabiomaulo.blogspot.com.ar/2009/07/nhibernate-configuration-through.html