5

特定のスレッドからログ エントリを除外する可能性はありますか?

テストの実行に 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>
4

2 に答える 2

-2

私はlog4netを使用していませんが、簡単な提案は、ログ電子メールを受信するために電子メールIDを指定する場所で、idをfake@fake.comのようなものに変更することです...

毎回メールを送信しないように設定する必要があることに同意しましたが、適切な解決策が見つかるまで、これは回避策になる可能性があります

ロギングを使用している間は、Microsoft Enterprise ライブラリのロギング アプリケーション ブロックも参照することをお勧めします。アプリケーションでの構成と使用は非常に簡単です。

リンクhttp://msdn.microsoft.com/en-us/library/ff664569(v=pandp.50).aspx

于 2012-09-26T17:10:28.333 に答える