2012-09-26 15 views
5

¿Existe la posibilidad de filtrar entradas de registro de un hilo específico?log4net - confgure para ignorar mensajes de un hilo específico

utilizo nunit para la ejecución de pruebas (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"); 
     } 
    } 
} 

Este es el registro de recibo:

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 me envía un correo electrónico cada vez que se registra un error. Si ejecuto la prueba, no quiero recibir esos correos. nunit establece el nombre del hilo en: "TestRunnerThread". ¿Cómo puedo ignorar este hilo?

He leído esto: How to log into separate files per thread with Log4Net? y trató este filtro (y tengo ningún registro en absoluto):

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

¿Por qué no se configura otro conjunto de appenders en el entorno de pruebas? –

+0

El método que está intentando requiere más que configurar threadName en TestRunnerThread, pero también requiere algo para establecer la propiedad log4net, por ejemplo 'log4net.ThreadContext.Properties [" threadId "] =" TestRunnerThread ";' y es poco probable que Nunit lo haga. estar haciendo eso. – sgmoore

+0

@WiktorZychla: Esta será una autocomprobación del programa. Algunas de las pruebas verifican si la configuración es correcta. Tanto la configuración específica del programa como log4net-config están en el mismo archivo (app.config). Intentaré desactivar los appenders dinámicamente en _self-test-mode_. – dirk

Respuesta

-2

no he usado log4net sino una simple sugerencia sería cambiar el id a algo así como [email protected] en el lugar donde especifica el ID de correo electrónico para recibir correos electrónicos de registro ...

Estoy de acuerdo en que debe haber algo que configurar para no enviar correos electrónicos cada vez, pero esto puede ser una solución hasta que encuentre un solución

Mientras Si está utilizando el registro, también le sugiero que consulte el bloque de aplicaciones de registro de la biblioteca de Microsoft Enterprise. Es muy fácil de configurar y usar en su aplicación.

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

Cuestiones relacionadas