2012-07-28 11 views
5

Estoy tratando de configurar un log4net SmtpAppender para que solo reciba un correo electrónico si se golpea un determinado nivel de registro, pero con las últimas 10 líneas de todos los niveles incluidos. Este es mi config:¿Cómo configuro un log4net SmtpAppender para que solo me envíe correos electrónicos cuando se golpea un cierto nivel?

<appender name="EmailAppender" type="SmtpSubjectLayoutAppender"> 

    <evaluator type="log4net.Core.LevelEvaluator"> 
    <threshold value="WARN"/> 
    </evaluator> 

    <bufferSize value="10" /> 
    <lossy value="false" /> 

    ... 
</appender> 

hago ejercicios con este código:

for (var i = 1; i <= 30; i++) 
{ 
    logger.Info("This is just a test message " + i); 
} 

logger.Error("Error message"); 

El problema es que me acaban de conseguir 3 e-mails, 2 con toda la INFO tala y uno que tiene las últimas líneas que se produjeron antes de la ERROR:

[2012-07-27 18:59:55.657][INFO ][Chase][tid=14972] This is just a test message 23 
[2012-07-27 18:59:55.659][INFO ][Chase][tid=14972] This is just a test message 24 
[2012-07-27 18:59:55.661][INFO ][Chase][tid=14972] This is just a test message 25 
[2012-07-27 18:59:55.662][INFO ][Chase][tid=14972] This is just a test message 26 
[2012-07-27 18:59:55.664][INFO ][Chase][tid=14972] This is just a test message 27 
[2012-07-27 18:59:55.666][INFO ][Chase][tid=14972] This is just a test message 28 
[2012-07-27 18:59:55.667][INFO ][Chase][tid=14972] This is just a test message 29 
[2012-07-27 18:59:55.670][INFO ][Chase][tid=14972] This is just a test message 30 
[2012-07-27 18:59:55.671][ERROR][Chase][tid=14972] Error message 

¿Cómo se configura el appender de modo que consiga un e-mail con las últimas 10 líneas si WARN o mayor ocurrió, b ut para ignorar el buffer de otra manera?

+0

eche un vistazo a esta publicación para obtener una respuesta correcta: http://stackoverflow.com/questions/13254495/log4net-levelevaluator-ignored-when-buffersize-greater-than-1-for-smtpappender –

Respuesta

4

Es necesario que ajuste el valor con pérdidas true:

<lossy value="true" /> 

En la configuración de log4net escribe el buffer no sólo cuando se registra un error, sino también cuando el búfer está lleno. La bandera con pérdida le dice a log4net que descarte los mensajes si es necesario.

+0

Creo controla la cantidad de líneas que guarda el apéndices con pérdidas también –

2

Uso

<threshold value="WARN"/> 

El

<evaluator type="log4net.Core.LevelEvaluator"> 
    <threshold value="WARN"/> 
</evaluator> 

no parece funcionar (versión log4net 1.2.13.0) más ...

Usando

<lossy value="true" /> 

no es bueno cuando uno quiere obtener el desorden siglos.

Cuestiones relacionadas