【问题标题】:Log4Net email appender is sending emails when the threshold has not been met未达到阈值时,Log4Net 电子邮件附加程序正在发送电子邮件
【发布时间】:2016-01-20 16:25:10
【问题描述】:

我有一个 appender,我认为应该将其配置为仅在 ERROR 级别登录时发送电子邮件。

但我不断收到来自应用程序的电子邮件,其中没有任何具有错误日志级别的条目。

此配置中是否存在“欺骗”appender 发送的内容?也许与有损设置有关?

<appender name="SmtpErrorAppender" type="log4net.Appender.SmtpAppender">
    <to value="myemail@somewhere.com"/>
    <from value="someapp@config.com" />
    <subject value="Service Error" />
    <authentication value="None" />
    <smtpHost value="127.0.0.1" />
    <port value="25" />
    <lossy value="false" />
    <evaluator type="log4net.Core.LevelEvaluator">
        <threshold value="ERROR" />
    </evaluator>
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%newline %-5level %date %message%newline%newline%newline" />
    </layout>
</appender>
<root>
    <level value="DEBUG"/>
    <appender-ref ref="RollingLogFileAppender"/>
    <appender-ref ref="SmtpErrorAppender"/>
</root>

【问题讨论】:

  • 使用下面的过滤器-原因是(source)-“评估器由 BufferingAppenderSkeleton 实现,因此仅由扩展此基类并提供缓冲支持的附加程序支持。SmtpAppender就是这样一个 appender。Evaluator 是一个可插入的对象,BufferingAppenderSkeleton 使用它来确定是否不应该缓冲日志事件,而是立即写入/发送。"

标签: log4net log4net-configuration


【解决方案1】:

在 appender 中设置日志级别过滤器。

<filter type="log4net.Filter.LevelRangeFilter">
  <levelMin value="ERROR" />
  <levelMax value="FATAL" />
</filter>

【讨论】:

  • 这是否意味着有损日志将仅包含 ERROR 和 FATAL 并且没有导致错误的信息消息?
猜你喜欢
  • 1970-01-01
  • 2021-04-05
  • 2016-11-30
  • 2018-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多