特定のスレッドからログ エントリを除外する可能性はありますか?
テストの実行に 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");
}
}
}
これは私が得るログです:
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
log4net は、ERROR がログに記録されるたびにメールを送信します。テストを実行すると、それらのメールを受け取りたくありません。nunit は、スレッド名を「TestRunnerThread」に設定します。このスレッドを無視するにはどうすればよいですか?
私はこれを読みました:Log4Netでスレッドごとに別々のファイルにログインする方法は? このフィルターを試しました(ログはまったく取得されませんでした):
<filter type="log4net.Filter.PropertyFilter">
<key value="threadId" />
<stringToMatch value="TestRunnerThread" />
<acceptOnMatch value="false" />
</filter>