Хотя этот ответ запаздывает почти на 3 месяца, надеюсь, это поможет вам и другим в будущем.Вы можете использовать StringMatchFilter
, чтобы ограничить электронную почту определенной ошибкой.
Эту проблему можно решить с помощью комбинации SMTPAppender и фильтров .Добавьте следующее в ваш jboss-log4j.xml
: -
<!-- add the SMTPAppender -->
<appender name="SMTP" class="org.apache.log4j.net.SMTPAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] (%t) %m%n"/>
</layout>
<param name="Threshold" value="ERROR"/>
<param name="To" value="someone@somewhere.com"/>
<param name="From" value="someone@somewhere.com"/>
<param name="Subject" value="JBoss Alert: ProjectFatalException"/>
<param name="SMTPHost" value="some.smtp.host"/>
<param name="BufferSize" value="512"/>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="error" />
<param name="LevelMax" value="fatal" />
</filter>
<filter class="org.apache.log4j.varia.StringMatchFilter">
<param name="StringToMatch" value="ProjectFatalException" />
<param name="AcceptOnMatch" value="true" />
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
</appender>
<!-- add the SMTP appender to your project package category -->
<category name="com.myproject">
<priority value="ERROR"/>
<appender-ref ref="SMTP"/>
</category>
В качестве дополнительного примечания, как правило, рекомендуется добавлять медленные дополнения, такие как SMTP, в качестве ASYNC.По умолчанию это синхронно.