Определите элемент TriggeringPolicy внутри элемента SMTPAppender. Класс элемента TriggeringPolicy будет иметь вид org.apache.log4j.rolling.FilterBasedTriggeringPolicy.
Внутри элемента TriggeringPolicy определите элемент 'filter', класс которого org.apache.log4j.filter.ExpressionFilter.
Затем вы можете использовать любое поле события, которое вы хотите (и регулярное выражение поддерживает ключевое слово «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>