当字符串匹配发生时,log4net SMTP appender包含以前的日志条目

时间:2014-12-12 21:02:34

标签: logging log4net log4net-appender

我正在尝试为log4net设计SMTP appender配置,当发生特定字符串匹配时,该配置将发送包含先前日志条目的电子邮件。用例是我们每天都有一个流程。我有一个SMTPAppender,它可以监视错误并且工作正常。但我想要另一个SMTP appender来监视"程序的成功"程序运行完毕后发出的消息,并向我们的ops发送一封电子邮件,其中包含运行的所有日志条目,如下所示:

 1/1/2014 4:00 PM - Program started
 1/1/2014 4:01 PM - Program Running
 1/1/2014 4:02 PM - Program still running
 1/1/2014 4:03 PM - Program success

以下是我为寻找者提供的模板

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
  <to value="ops@example.com" />
  <from value="automated@example.com" />
  <subject value="Program has run successfully" />
  <smtpHost value="mailserver.com" />
  <username value="" />
  <password value="" />
  <bufferSize value="512" />
  <lossy value="false" />
  <evaluator type="log4net.Core.???">
    What goes here?
  </evaluator>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" />
  </layout>
</appender>

1 个答案:

答案 0 :(得分:1)

创建自己的ITriggeringEventEvaluator实现似乎是要走的路。然后,当传递的IsTriggeringEvent包含目标字符串时,您可以使LoggingEvent's RenderedMessage property返回true。