Unit testing 单元测试期间的nHibernate输出sql日志记录

Unit testing 单元测试期间的nHibernate输出sql日志记录,unit-testing,nhibernate,logging,Unit Testing,Nhibernate,Logging,我正在VS2008内部对一个nHibernate应用程序运行单元测试,并且希望在单元测试期间打开日志记录,这样我可以看到更多正在发生的事情。我复制并粘贴了另一个应用程序的app.config,它成功地将nhibernate信息记录到单元测试app.config中,但仍然没有得到任何输出 以下是测试项目的my app.config: <log4net> <appender name="NHibernateFileLog" type="log4net.Appender.Ro

我正在VS2008内部对一个nHibernate应用程序运行单元测试,并且希望在单元测试期间打开日志记录,这样我可以看到更多正在发生的事情。我复制并粘贴了另一个应用程序的app.config,它成功地将nhibernate信息记录到单元测试app.config中,但仍然没有得到任何输出

以下是测试项目的my 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运行的应用程序必须是web或windows而不是测试应用程序吗?

如果您只想查看所有激发的sql语句,请在Nhiberante配置部分将show_sql属性设置为true

e、 g


真的

在调试中使用log4net将为您提供NHibernate所需的全部信息

如果您只想查看sql输出,那么show_sql是一个很好的选项


如果您的代码正在登录生产,但未登录测试,请查看测试目录。测试运行在“testresults”的子目录中,该子目录是为每个测试运行创建的。您的配置文件肯定不在那里


需要安装到测试目录的所有内容都需要声明。使用[DeploymentItem(“myfile”)]将其添加到testclass,或转到测试->编辑测试运行配置->本地测试运行。然后转到“部署”并添加配置文件。

在测试初始值设定项中,需要调用:

log4net.Config.XmlConfigurator.Configure();

这将很好地启用日志记录。

请确保您的测试dll中有一个名为test.dll.configI的配置,并且有。我知道它正在工作,因为那里也存储了连接字符串。我查看了测试结果文件夹,仍然没有看到任何内容。我甚至对整个解决方案目录进行了搜索,但没有记录任何内容。我还得继续讨论。只是想弄清楚:1)你需要确保你的log4net配置真的能让你记录代码。通过使用此配置启动应用程序来测试这一点。2) 您需要确保您的log4net配置实际部署到testresults文件夹。您可以按照我的回答中所述进行操作,并通过查看testresults\blabla\out文件夹进行测试。如果不存在,则不需要搜索日志文件。是否尝试了DeploymentItem?
<?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>
log4net.Config.XmlConfigurator.Configure();