Visual studio log4net和NUnit 3.2以及VS中的控制台输出
在我的NUnit 2.6测试中,我曾经在VisualStudio的输出窗口的测试部分中看到log4net日志消息。由于我切换到NUnit 3.2,它们不再显示,这非常不方便。我尝试过搜索,我想到的最佳“解决方案”是将所有内容转储到调试字符串中,可以通过SysInternals中的DebugView实用程序查看这些字符串,也可以在我实际调试测试时查看这些字符串,然后在调试部分中显示这些消息。然而,我真的很想在VisualStudio中看到我的日志行,即使没有调试。有什么想法吗?Visual Studio 2015。这是我当前的log4net配置:Visual studio log4net和NUnit 3.2以及VS中的控制台输出,visual-studio,nunit,log4net,log4net-configuration,nunit-3.0,Visual Studio,Nunit,Log4net,Log4net Configuration,Nunit 3.0,在我的NUnit 2.6测试中,我曾经在VisualStudio的输出窗口的测试部分中看到log4net日志消息。由于我切换到NUnit 3.2,它们不再显示,这非常不方便。我尝试过搜索,我想到的最佳“解决方案”是将所有内容转储到调试字符串中,可以通过SysInternals中的DebugView实用程序查看这些字符串,也可以在我实际调试测试时查看这些字符串,然后在调试部分中显示这些消息。然而,我真的很想在VisualStudio中看到我的日志行,即使没有调试。有什么想法吗?Visual Stu
<?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>
NUnit V2捕获log4net输出并将其转换为NUnit事件。对于3.0,我们认为这超出了NUnit的范围,并将其留给log4net来显示。在NUnit控制台运行程序下运行时,这可以正常工作,但在VS适配器下有一点限制
我认为我们提供一个appender或引擎扩展是合理的,您可以使用它将log4net输出转换为NUnit输出事件的形式。这是一个有人自愿写的问题。如果您认为这很重要,您可以在github上提交一个问题。对于NUnit v3,您可以使用以下代码行来完成此操作:
Console.SetOut(TestContext.Progress);
Log4Net配置为使用ConsolePender。对于我来说,解决方案是将
ConsolePender
的目标属性设置为“Console.Out”:
不需要设置为TestContext.Progress
这是NUnit 3.11和R#testrunner的一部分。注意,我们使用了不同的附加器。无论如何,我会把这个留在这里,因为它是在我的主SERP中出现的。:) 谢谢,我们在github中提出了这个问题。我认为这是相当重要的,因为我看到很多人在抱怨…谢谢你的问题。。。投诉者中没有一人被录取。:-)
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender, log4net">
<target value="Console.Out"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{dd MMM yyyy HH:mm:ss} %level [%thread] %method - %message%n" />
</layout>
</appender>