jboss 6.x: отправка электронной почты, если выбрасывается определенный тип исключения - PullRequest
1 голос
/ 24 ноября 2011

Мы используем журналирование jBoss и наконец оно заработало - теперь у нас есть проблема, из-за которой мы не хотим отправлять электронную почту каждый раз, когда происходит ОШИБКА.Мы просто хотим отправить электронное письмо, если выбрасываются определенные исключения.например, com.myproject.exceptions.fatal.ProjectFatalException

Определение по умолчанию в «jboss-logging.xml» выглядит следующим образом:

   <log4j-appender name="SMTP" class="org.apache.log4j.net.SMTPAppender">
      <error-manager>
         <only-once/>
      </error-manager>

  <level name="ERROR"/>
  <properties>
     <property name="to">admin@myhost.domain.com</property>
     <property name="from">nobody@myhost.domain.com</property>
     <property name="subject">JBoss Sever Errors</property>
     <property name="SMTPHost">localhost</property>
     <property name="bufferSize">10</property>
  </properties>

  <formatter>
     <pattern-formatter pattern="%d %-5p [%c] (%t) %m%n"/>
  </formatter>
</log4j-appender> 

1 Ответ

4 голосов
/ 15 февраля 2012

Хотя этот ответ запаздывает почти на 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.По умолчанию это синхронно.

...