我有一个使用log4net的使用文本和SMTP追加程序的程序。
当程序运行时数记录由SMTP追加程序捕获并发送邮件之前被缓冲等待程序结束。
当程序已接近完成我可能会发现我并不需要发送邮件,其实我日志像“没事做”。
我知道这是可以通过代码来操纵附加目的地的配置,所以我可以抑制邮件设置的门槛了。
我想知道是否有可能只使用log4net的配置,以获得相同的结果:如果一个特定的字符串被随时记录的SMTP附加器不应发送电子邮件。 相反,如果该字符串没有登录它应该表现正常,并把所有符合定义的过滤器的行。
TL; DR;
- 创建一个自定义
ITriggeringEventEvaluator
- 这个评估配置SMTP的appender:决定什么时候缓冲区满一定会发生什么(丢弃的消息,给他们)
- 使用您的appender的自动冲水向前发送日志事件
有在两个属性BufferingAppenderSkeleton
在log4net的,可能这里感兴趣。 当您配置这样一个appender是Lossy
, Evaluator
和LossyEvaluator
用于确定邮件是否应该被发送到下一个附加目的地。
该Evaluator
属性可以让你定义一个类继承ITriggeringEventEvaluator
; 当被记录的消息和缓冲器是满的,评估器被调用,如果它在返回true IsTriggeringEvent
方法处理的事件缓冲器。 该LossyEvaluator
作品以同样的方式,但它被调用来决定是否会从缓存中消失,因为它是完全必须登录或不是最早的事件。
由于您的SmtpAppender
是BufferingAppenderSkeleton
,您可以使用Evaluator
属性,以确定是什么原因引发或不被发送的电子邮件(即您可以说“不登录”,或任何记录事件)
但是,如果你希望你的appender到自己决定是否要关闭时发送的事件日志(即它应该自动冲水与否)它是LossyEvaluator
时使用。
现在的坏消息:只有一个实例ITriggeringEventEvaluator
在log4net的实现,其评估根据自己的级别的日志事件。 所以,你将不得不以承认你的应用程序发送到appender的特殊信息编写自己的触发器。