2017-02-08 2 views
2

привет StackOverflow пользователей,Log4Net SmtpAppender ставить порог в теме

У меня есть служба C# Windows с помощью log4net, который будет отправлять электронные письма, когда есть ошибки. Теперь у нас возникла проблема получения писем для «ожидаемых» и «нормальных» ошибок, что-то пошло не так, но служба все еще работает, и ничего не нужно делать. Таким образом, одно простое решение - идентифицировать наши «ожидаемые» ошибки и записывать их как «WARN» вместо ошибок.

Было бы здорово, если бы log4net мог отправлять электронные письма как для уровней «WARN», так и для уровня «ERROR», а в строке темы определить уровень. Таким образом, уровни «WARN» могут автоматически маршрутизироваться в папку для просмотра в будущем и «ОШИБКИ» могут быть непосредственно идентифицированы и рассмотрены.

Вопрос: Возможно ли получить значение триггера, то есть «WARN» или «ERROR» в строке темы?

Я попытался сделать два блока SmtpAppender в файле конфигурации, но это не сработало.

Спасибо вам за помощь.

ответ

3

Вы можете создать два отдельных appenders и установки в LevelRangeFilter для каждого из них, как это:

<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> 

Затем настроить ваш регистратор с обеих appenders:

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

Пожалуйста, обратите внимание, что РЕГИСТРАТОРУ уровень должен быть установлен как WARN или lower. Если установлено значение ERROR, регистратор не будет вызывать предупреждения, поэтому приложение Warn не получит их.

Это должно сделать трюк.

Смежные вопросы