3

私の NUnit 2.6 テストでは、Visual Studio の出力ウィンドウの [テスト] セクションに log4net ログ メッセージが表示されていました。NUnit 3.2に切り替えてから表示されなくなり、とても不便です。検索してみましたが、思いついた最善の「解決策」は、すべてをデバッグ文字列にダンプすることでした。これは、SysInternals の DebugView ユーティリティを介して、または実際にテストをデバッグするときに表示できます。メッセージは [デバッグ] セクションに表示されます。ただし、デバッグしていないときでも、Visual Studio でログ行を確認したいと思っています。何か案は?Visual Studio 2015. これは私の現在の log4net 構成です:

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

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

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

    <root>
      <level value="ALL" />
      <appender-ref ref="OutputDebugStringAppender" />
      <appender-ref ref="DebugAppender" />
    </root>
  </log4net>
</configuration>
4

3 に答える 3

3

NUnit V2 は log4net 出力をキャプチャし、それを NUnit イベントに変換しました。3.0 では、これは NUnit の範囲外であると判断し、log4net に表示を任せました。NUnit コンソール ランナーで実行している場合、これは正常に機能しますが、VS アダプターでは少し制限があることが判明しました。

log4net出力をNUnit出力イベントの形式にするために使用できるアペンダーまたはエンジン拡張機能を提供することは合理的だと思います。誰かが自発的に書いてくれる問題です。これが重要だと思われる場合は、github で問題を報告してください。

于 2016-06-18T16:19:00.007 に答える
1

NUnit v3 の場合、次のコード行でそれを行うことができます。

Console.SetOut(TestContext.Progress);

ConsoleAppender を使用するように構成された Log4Net。

于 2016-11-29T15:16:23.933 に答える