1

在我的NUnit 2.6測試中,我曾在Visual Studio的輸出窗口的Tests部分中看到log4net日誌消息。由於我切換到NUnit 3.2,它們不再顯示,這是非常不方便的。我嘗試過搜索,我想出的最佳「解決方案」是將所有內容轉儲到調試字符串中,可以通過SysInternals中的DebugView實用程序查看,也可以在實際調試測試時查看 - 然後將消息顯示在調試部分。但是,我真的很想在Visual Studio中看到我的日誌行,即使在不進行調試時也是如此。有任何想法嗎? Visual Studio 2015.這是我當前的log4net配置:log4net和NUnit 3.2以及控制檯輸出VS

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

回答

1

NUnit V2捕獲log4net輸出並將其轉換爲NUnit事件。對於3.0,我們認定這已經超出了NUnit的範圍,並將其留在log4net中以顯示內容。在NUnit控制檯運行器下運行時,這種方式可以正常工作,但是它在VS適配器下有一定的侷限性。

我認爲我們可以提供一個appender或者一個引擎擴展,你可以使用它來獲得log4net輸出爲NUnit輸出事件的形式。這是一個志願寫它的人的問題。如果你認爲這很重要,你可以在github上提出問題。

+0

謝謝,在github上提出了這個問題。我認爲這是相當重要的,因爲我看到不少人抱怨它... – Andre

+0

感謝您的問題...沒有一個抱怨者得到了一個。:-) – Charlie

+0

鏈接到問題 - https://github.com/NUnit的/ NUnit的/問題/ 1588 –

0

對於NUnit的V3,你可以做到這一點與這行代碼:

Console.SetOut(TestContext.Progress); 

log4net的配置爲使用是ConsoleAppender。