Log4Net SmtpAppender将阈值放入主题行 [英] Log4Net SmtpAppender put threshold in subject line

查看:123
本文介绍了Log4Net SmtpAppender将阈值放入主题行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问候Stackoverflow用户

Greetings Stackoverflow users,

我有一个使用log4net的c#Windows服务,该服务将在出现错误时发送电子邮件.现在,我们遇到了因预期的"和正常的"错误而收到电子邮件的问题,虽然出了点问题,但该服务仍在工作,无需执行任何操作.因此,一种简单的解决方案是识别我们的预期"错误,并将其记录为"WARN"而不是错误.

I have a c# windows service using log4net that will send out emails when there are errors. We now have the problem of getting emails for "expected" and "normal" errors, that is something went wrong but the service is still working and nothing has to be done. So the one easy solution is to identify our "expected" errors and log them as "WARN" instead of errors.

如果log4net可以为我们的警告"级别和错误"级别的事件发送电子邮件,并且在主题行中标识该级别是什么,那就太好了.因此,"WARN"级别可以自动路由到文件夹中,以备将来查看,而"ERRORS"则可以直接识别并查看.

It would be great if log4net could send emails for both our "WARN" level and "ERROR" level events, and in the subject line identify what the level is. So the "WARN" levels can automatically be routed to a folder to look at sometime in the future and the "ERRORS" can be directly identified and looked at.

问题:是否可以在主题行中获取触发值,即"WARN"或"ERROR"?

Question: Is it possible to get the trigger value, that is "WARN" or "ERROR" into the subject line??

我试图在配置文件中创建两个SmtpAppender块,但这没用.

I tried to make two SmtpAppender blocks in the configuration file, but that did not work.

谢谢您的帮助.

推荐答案

您可以创建两个单独的附加程序,并为每个附加程序设置一个LevelRangeFilter,如下所示:

You can create two separate appenders and setup a LevelRangeFilter for each one, like this:

<appender name="WarnSmtpAppender" type="log4net.Appender.SmtpAppender">
    <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="WARN" />
        <levelMax value="WARN" />
    </filter>
    <to value="to@domain.com" />
    <from value="from@domain.com" />
    <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="to@domain.com" />
    <from value="from@domain.com" />
    <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>

然后,您使用两个附加程序设置记录器:

Then, you setup your logger with both appenders:

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

请注意,必须将LOGGER级别设置为WARN或更低.如果设置为ERROR,则记录器将不会发出警告,因此警告附加程序将不会获得警告.

Please note that the LOGGER level must be set to WARN or lower. If set to ERROR, the logger will not emit Warnings, so the Warn appender will not get them.

这应该可以解决问题.

这篇关于Log4Net SmtpAppender将阈值放入主题行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆