Логирование выходных данных nHibernate во время модульных тестов - PullRequest
3 голосов
/ 17 апреля 2009

Я запускаю модульные тесты из VS2008 с приложением nHibernate и хотел бы включить ведение журнала во время модульных тестов, чтобы я мог видеть чуть больше происходящего. Я скопировал и вставил app.config другого приложения, которое успешно регистрирует информацию nhibernate в app.config модульных тестов, но все еще не получает никакого вывода.

Вот мой app.config для проекта тестирования:

<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>

Когда я запускаю тестовый проект, нигде не создается выход из log4net. Должно ли приложение, под которым запускается log4net, быть веб или windows, а не приложением для тестирования?

Ответы [ 4 ]

5 голосов
/ 24 апреля 2009

В инициализаторе теста должен быть вызов:

log4net.Config.XmlConfigurator.Configure();

Это включит регистрацию просто отлично.

1 голос
/ 17 апреля 2009

Использование log4net в DEBUG даст вам все, что может рассказать NHibernate.

show_sql - отличный вариант, если вы просто хотите увидеть вывод SQL

Настройка Log4Net для использования с NHibernate

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!-- Others sections -->
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>

<!-- Some others configurations -->

<!-- This section contains the log4net configuration settings -->
<log4net debug="false">

<appender name="console"
type="log4net.Appender.ConsoleAppender, log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern"
value="%d{ABSOLUTE} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>

<!-- Setup the root category, add the appenders and set the default priority -->
<root>
<priority value="DEBUG" />
<appender-ref ref="console" />
</root>

</log4net>
</configuration>
1 голос
/ 17 апреля 2009

если вы хотите просто посмотреть на все запущенные операторы sql, установите для свойства show_sql значение true в разделе конфигурации Nhiberante,

например,

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<property name="show_sql">true</property>
</hibernate-configuration>
0 голосов
/ 21 апреля 2009

Если ваш код входит в систему в работе, но не в тесте, загляните в тестовые каталоги. Тесты выполняются в подкаталоге «testresults», который создается для каждого тестового запуска. Ваш конфигурационный файл, конечно, не там.

Все, что нужно установить в тестовый каталог, должно быть объявлено. Добавьте [DeploymentItem ("myfile")] к тестовому классу, используя его, или перейдите в Test -> edit конфигурации тестового прогона -> Local test run. Затем перейдите в «Развертывание» и добавьте файл конфигурации.

...