dir*_*irk 5 c# logging log4net nunit log4net-filter
是否有可能从特定线程中过滤掉日志条目?
我使用nunit来运行测试(c#):
using System;
using NUnit.Core;
using log4net;
namespace Main
{
public class Program
{
public static readonly ILogger log = LogManager.GetLogger(typeof(Program));
static void Main(string[] args)
{
log.Info("start");
TestPackage package = new TestPackage(@"C:\Test\Main.Tests.dll");
RemoteTestRunner remoteTestRunner = new RemoteTestRunner();
remoteTestRunner.Load(package);
TestResult result = remoteTestRunner.Run(new NullListener(), TestFilter.Empty, true, LoggingThreshold.All);
log.Info("end");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的日志记录:
INFO 17:57:24 [1] Main.Program - start
ERROR 17:57:25 [TestRunnerThread] Main.TestedClass - Exception! Relevant for production / okay in test
INFO 17:57:26 [1] Main.Program - end
Run Code Online (Sandbox Code Playgroud)
每次记录ERROR时,log4net都会向我发送邮件.如果我运行测试,我不想收到那些邮件.nunit将thread-name设置为:"TestRunnerThread".我怎么能忽略这个帖子?
我读过这个:如何使用Log4Net登录每个线程的单独文件?并尝试了这个过滤器(并没有得到任何日志):
<filter type="log4net.Filter.PropertyFilter">
<key value="threadId" />
<stringToMatch value="TestRunnerThread" />
<acceptOnMatch value="false" />
</filter>
Run Code Online (Sandbox Code Playgroud)
Bha*_*vin -2
我没有使用过 log4net,但一个简单的建议是将 id 更改为类似 fake@fake.com 的名称,在您指定电子邮件 id 来接收日志电子邮件的地方...
同意应该进行一些配置以不每次都发送电子邮件,但这可以是一种解决方法,直到您找到合适的解决方案
当您使用日志记录时,我还建议您查看 Microsoft Enterprise 库日志记录应用程序块。在您的应用程序中配置和使用非常容易。
链接http://msdn.microsoft.com/en-us/library/ff664569(v=pandp.50).aspx
| 归档时间: |
|
| 查看次数: |
1081 次 |
| 最近记录: |