2012-07-28 11 views
5

Sto tentando di configurare un log4net SmtpAppender in modo tale da ottenere solo un messaggio di posta elettronica se viene raggiunto un determinato livello di registro, ma con le ultime 10 righe da inclusi tutti i livelli. Questo è il mio config:Come configurare un log4net SmtpAppender per inviarmi solo e-mail quando viene raggiunto un determinato livello?

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

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

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

    ... 
</appender> 

sto esercitando con questo codice:

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

logger.Error("Error message"); 

Il problema è che io alla fine per ottenere 3 e-mail, 2 con tutta la registrazione INFO e uno che ha le ultime righe che si sono verificati prima della 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 

Come configurare l'appender in modo che ricevo una e-mail con le ultime 10 righe se WARN o superiore si è verificato, b altrimenti ignorare il buffer?

+0

dai un'occhiata a questo post per la risposta corretta: http://stackoverflow.com/questions/13254495/log4net-levelevaluator-ignored-when-buffersize-greater-than-1-for-smtpappender –

risposta

4

è necessario impostare il valore di perdita di dati su true:

<lossy value="true" /> 

Nella configurazione log4net scrive il buffer non solo quando viene registrato un errore, ma anche quando il buffer è pieno. La flag lossy dice a log4net di scartare i messaggi se necessario.

+0

Credo controlla il numero di righe che l'appender lossy mantiene anche –

2

Usa

<threshold value="WARN"/> 

Il

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

non sembra funzionare (log4net versione 1.2.13.0) più ...

Utilizzando

<lossy value="true" /> 

non è buona quando uno vuole avere il casino età.

Problemi correlati