2012-09-26 3 views
5

특정 스레드의 로그 항목을 필터링 할 수 있습니까?log4net - 특정 스레드의 메시지를 무시하도록 구성

나는 검사에게 (C#)를 실행하기위한 NUNIT를 사용

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이 나에게 오류가 기록 될 때마다 메일을 보냅니다. 테스트를 통과하면 그 메일을 받고 싶지 않습니다. nunit은 스레드 이름을 "TestRunnerThread"로 설정합니다. 어떻게이 스레드를 무시할 수 있습니까?

나는 이것을 읽은 : How to log into separate files per thread with Log4Net?이 필터를 시도했다 (그리고 전혀 로그 없어) : 같은에 ID를 변경하는 내가 log4net를 사용하지 않은하지만 단순한 제안이 될 것이다

<filter type="log4net.Filter.PropertyFilter"> 
    <key value="threadId" /> 
    <stringToMatch value="TestRunnerThread" /> 
    <acceptOnMatch value="false" /> 
</filter> 
+1

가 왜 테스트 환경에서 펜더의 또 다른 세트를 구성하지 않은 링크? –

+0

시도하는 방법은 threadName을 TestRunnerThread로 설정하는 것 이상이 필요하지만 log4net 속성, 예를 들어'log4net.ThreadContext.Properties [ "threadId"] = "TestRunnerThread";를 설정해야합니다. Nunit은 그렇게하고있어. – sgmoore

+0

@WiktorZychla : 이것은 프로그램의 자체 테스트가 될 것입니다. 일부 테스트는 구성이 올바른지 확인합니다. 프로그램 관련 설정과 log4net 설정 모두 동일한 파일 (app.config)에 있습니다. _self-test-mode_에서 appenders를 동적으로 비활성화하려고 노력할 것입니다. – dirk

답변

-2

[email protected] 로깅 전자 메일을 수신 할 전자 메일 ID를 지정하는 곳에서 ...

동의 할 때마다 전자 메일을 보내지 않도록 구성해야하지만 동의 할 때까지는 문제 해결 방법이 될 수 있습니다. 해결책

동안 당신은 로깅을 사용하고 있습니다, 나는 또한 당신이 응용 프로그램 블록 로깅 Microsoft 엔터 프라이즈 라이브러리를 살펴볼 것을 제안합니다. 응용 프로그램에서 쉽게 구성하고 사용할 수 있습니다.

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

관련 문제