java - 扩展 TriggeringEventEvaluator (log4j) 并在配置中为其提供属性

标签 java email logging smtp log4j

该接口(interface)由 log4j 中的 SMTPAppender 类使用。 它有一个返回状态的方法(是否触发电子邮件警报)

问题是 我想向 TriggeringEventEvaluator 添加一些功能。 这需要在 TriggeringEventEvaluator 的配置中指定一些额外的字段。

如何将这些字段从 log4j 配置传递到 TriggeringEventEvaluator。 我知道 log4j 调用字段的 setter 方法,但是如何为 TriggeringEventEvaluator 指定字段

最佳答案

在 SMTPAppender 元素内定义 TriggeringPolicy 元素。 TriggeringPolicy 元素的类将为 org.apache.log4j.rolling.FilterBasedTriggeringPolicy。

在 TriggeringPolicy 元素内,定义一个类为 org.apache.log4j.filter.ExpressionFilter 的“filter”元素。

然后,您可以使用所需的任何事件字段(并且正则表达式支持使用“like”关键字)来过滤事件。 Chainsaw 的开发者快照有一个关于表达式语法的非常好的教程:http://people.apache.org/~sdeboy

示例:

<appender name="mail" class="org.apache.log4j.net.SMTPAppender">
  <param name="from"   value="[EMAIL PROTECTED]" />
  <param name="to" value="[EMAIL PROTECTED]" />
  <param name="subject" value="Test message" />
  <param name="SMTPHost" value="localhost"/>
  <param name="sendOnClose" value="true"/>
  <triggeringPolicy class="org.apache.log4j.rolling.FilterBasedTriggeringPolicy">
    <filter class="org.apache.log4j.filter.ExpressionFilter">
      <param name="Expression" value="( LOGGER ~= class1 &amp;&amp; MSG ~= test1 ) || ( logger ~= class2 &amp;&amp; MSG like 'TEST2' )"/>
    </filter>
  </triggeringPolicy>
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%-5p %c{2} - %m%n"/>
  </layout>
</appender>

关于java - 扩展 TriggeringEventEvaluator (log4j) 并在配置中为其提供属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6186249/

相关文章:

java - Android 中的 Dialog 内的 setAdapter() 无法弹出吗?

java - 我的语法有什么问题,我这样做效率高吗?

Python - 如何更改电子邮件文本字体

php - Godaddy cron 作业只发送一封电子邮件

r - 在外部程序中打开由 R 创建的文件

logging - 使用日志记录模块重命名 python 中的日志文件

java - Tomcat 配置以在不同的端口上接受 HTTPS

jvm - 常量池修补

php - 使用 PHP 正则表达式部分隐藏电子邮件地址?

python - 如何从 Python 中的 logging.formatter 对象获取格式化程序字符串?