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

发布于 2024-11-10 15:06:28 字数 275 浏览 1 评论 0原文

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

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

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

this interface is used by SMTPAppender class in log4j.
It has a method which returns a status (if to trigger an email alert or not)

The problem is that
i want to add somefunctionality to TriggeringEventEvaluator.
this requires some extra fields to specify in config for TriggeringEventEvaluator.

How can I pass these fields from log4j config to TriggeringEventEvaluator.
I know that log4j calls setter methods for fields but how can fields be specified for TriggeringEventEvaluator

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

紧拥背影 2024-11-17 15:06:28

在 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 && MSG ~= test1 ) || ( logger ~= class2 && MSG like 'TEST2' )"/>
    </filter>
  </triggeringPolicy>
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%-5p %c{2} - %m%n"/>
  </layout>
</appender>

Define a TriggeringPolicy element inside the SMTPAppender element. The TriggeringPolicy element's class would be org.apache.log4j.rolling.FilterBasedTriggeringPolicy.

Inside the TriggeringPolicy element, define a 'filter' element whose class is org.apache.log4j.filter.ExpressionFilter.

You can then use any event field you want (and regexp support using the 'like' keyword) in order to filter events. The developer snapshot of Chainsaw has a pretty good tutorial on the expression syntax: http://people.apache.org/~sdeboy

Example:

<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 && MSG ~= test1 ) || ( logger ~= class2 && MSG like 'TEST2' )"/>
    </filter>
  </triggeringPolicy>
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%-5p %c{2} - %m%n"/>
  </layout>
</appender>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文