2017-02-08 5 views
2

Grüße Benutzer Stackoverflow,Log4Net SmtpAppender setzen Schwelle in Betreffzeile

Ich habe eine C# Windows-Dienst log4net verwenden, die E-Mails versenden, wenn es Fehler gibt. Wir haben jetzt das Problem, E-Mails für "erwartete" und "normale" Fehler zu bekommen, das ist etwas schief gelaufen, aber der Dienst funktioniert immer noch und es muss nichts getan werden. Die einzige einfache Lösung besteht darin, unsere "erwarteten" Fehler zu identifizieren und sie als "WARN" anstelle von Fehlern zu protokollieren.

Es wäre toll, wenn log4net E-Mails für unsere „Warnen“ -Niveau und „ERROR“ Ebene Ereignisse senden kann, und in der Betreffzeile identifizieren, was das Niveau ist. So können die "WARN" -Ebenen automatisch zu einem Ordner geroutet werden, um ihn in der Zukunft anzuschauen und die "ERRORS" können direkt identifiziert und betrachtet werden.

Frage: Ist es möglich, den Trigger-Wert zu erhalten, das heißt „Warnen“ oder „ERROR“ in die Betreffzeile ??

Ich habe versucht, zwei SmtpAppender Blöcke in der Konfigurationsdatei zu machen, aber das hat nicht funktioniert.

Vielen Dank für Ihre Hilfe.

Antwort

3

Sie erstellen können zwei separate Appen und Einrichtung eines LevelRangeFilter für jeden, wie folgt aus:

<appender name="WarnSmtpAppender" type="log4net.Appender.SmtpAppender"> 
    <filter type="log4net.Filter.LevelRangeFilter"> 
     <levelMin value="WARN" /> 
     <levelMax value="WARN" /> 
    </filter> 
    <to value="[email protected]" /> 
    <from value="[email protected]" /> 
    <subject value="Warning logging message" /> 
    <smtpHost value="SMTPServer.domain.com" /> 
    <bufferSize value="512" /> 
    <lossy value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" /> 
    </layout> 
</appender> 

<appender name="ErrSmtpAppender" type="log4net.Appender.SmtpAppender"> 
    <filter type="log4net.Filter.LevelRangeFilter"> 
     <levelMin value="ERROR" /> 
     <levelMax value="ERROR" /> 
    </filter> 
    <to value="[email protected]" /> 
    <from value="[email protected]" /> 
    <subject value="Error logging message" /> 
    <smtpHost value="SMTPServer.domain.com" /> 
    <bufferSize value="512" /> 
    <lossy value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" /> 
    </layout> 
</appender> 

Dann Sie Setup-Logger mit beiden Appen:

<root> 
    <!-- Log4Net available levels: 
     ALL DEBUG INFO WARN ERROR FATAL OFF--> 
    <level value="WARN" /> 
    <appender-ref ref="WarnSmtpAppender" /> 
    <appender-ref ref="ErrSmtpAppender" /> 
</root> 

Bitte beachten Sie, dass die LOGGER level muss auf WARN oder niedriger eingestellt sein. Wenn ERROR gesetzt ist, gibt der Logger keine Warnungen aus, so dass der Warn-Appender sie nicht bekommt.

Dies sollte den Trick tun.