NUnit中的log4net错误:“0”;试图追加到名为[]的已关闭追加器中。”;

NUnit中的log4net错误:“0”;试图追加到名为[]的已关闭追加器中。”;,nunit,log4net,Nunit,Log4net,当我通过NUnit运行一些集成测试时,一切正常,包括日志记录。当我第二次运行任何测试时,不会抛出异常,但日志记录停止工作。相反,log4net会将以下内容写入控制台: log4net:ERROR [TextWriterAppender] Attempted to append to closed appender named []. 以下是log4net配置: <log4net debug="true" > <appender name="console"

当我通过NUnit运行一些集成测试时,一切正常,包括日志记录。当我第二次运行任何测试时,不会抛出异常,但日志记录停止工作。相反,log4net会将以下内容写入控制台:

log4net:ERROR [TextWriterAppender] Attempted to append to closed appender named [].
以下是log4net配置:

  <log4net debug="true" >
    <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>

    <root>
      <priority value="DEBUG" />
      <appender-ref ref="console" />
    </root>

    <logger name="NHibernate">
      <level value="WARN" />
    </logger>

    <logger name="NHibernate.SQL" >
      <level value="DEBUG" />
    </logger>
  </log4net>
我设法在各种其他appender设置中得到相同的错误。是什么导致了这个错误?我想知道原因是什么,这样我就知道如何修复它,以及如何在生产场景中重现它(如果可能的话),这样我就可以防止它发生在生产代码中


我使用的是NHibernate 2.0.1.GA及其附带的log4net版本(1.2.10.0)。

如果您看到错误,它会说[TextWriterAppender],这意味着log4net试图将日志消息附加到TextWriter,而您提供的配置没有


要么是加载了另一个带有log4net标记的配置文件,要么是您在任何地方调用LogManager.Shutdown()的代码。

能否显示引发异常的测试?该测试不会引发异常,SUT(正在测试的代码)中也不会捕获异常。这个问题似乎发生在通过NHibernate执行任何CRUD操作的每个测试中。我不知道问题是否仅限于NHibernate.Sql记录器,或者NHibernate记录器是否也遇到了这个问题;我将对此进行深入研究。但是有测试代码会有所帮助,这样我们就可以重现与log4net交互的NHibernate调用。
log4net.Config.XmlConfigurator.Configure();