Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

nHibernate output sql logging during unit testings

I'm running unit tests from inside VS2008 against a nHibernate application and would like to turn on logging during the unit tests so I can see a bit more of what is going on. I've copied and pasted another application's app.config that successfully logs nhibernate information into the unit tests app.config, but still don't get any output.

Here is my app.config for the testing project:

<log4net>
    <appender name="NHibernateFileLog" type="log4net.Appender.RollingFileAppender">
      <file value="Logs/nhibernate.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="100KB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n"  />
      </layout>
    </appender>

    <appender name="GeneralLog" type="log4net.Appender.RollingFileAppender">
      <file value="Logs/general.txt" />
      <appendToFile value="true" />
      <maximumFileSize value="100KB" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="5" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n"  />
      </layout>
    </appender>
    <appender name="DataLog" type="log4net.Appender.RollingFileAppender">
      <file value="Logs/data.txt" />
      <appendToFile value="true" />
      <maximumFileSize value="100KB" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="5" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n"  />
      </layout>
    </appender>

    <!-- levels: DEBUG, INFO, WARN, ERROR, FATAL -->

    <root>
      <level value="DEBUG"/>
      <appender-ref ref="GeneralLog" />
    </root>

    <logger name="NHibernate" additivity="false">
      <level value="DEBUG"/>
      <appender-ref ref="NHibernateFileLog"/>
    </logger>
    <logger name="Pushable.Data" additivity="false">
      <level value="DEBUG"/>
      <appender-ref ref="DataLog"/>
    </logger>
</log4net>

When I run the test project, no output is created anywhere from log4net. Does the application that log4net runs under have to be a web or windows and not a testing application?

like image 616
Josh Avatar asked Feb 28 '23 20:02

Josh


2 Answers

In the Test initializer, there needs to be a call:

log4net.Config.XmlConfigurator.Configure();

This will enable logging just fine.

like image 103
Josh Avatar answered Mar 11 '23 11:03

Josh


if you wish to just look at the all the sql statements fired, set show_sql property to true in the Nhiberante configuration section,

e.g

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<property name="show_sql">true</property>
</hibernate-configuration>
like image 39
Sathish Naga Avatar answered Mar 11 '23 09:03

Sathish Naga