I am using the SMTPAppender to email log info when an error occurs. I wrote
my own TriggeringEventEvaluator to use with the SMTPAppender. I also specified
a fallback appender.

  Normally everything works fine. However when our email system has
a problem such as the mailserver being temporarily unavailable, 
I want the system to use the fallback appender to log the info
to a file. Instead, I get an uncaught exception:

----------------------Begin stack trace ----------------------------------------
log4j:ERROR Error occured while sending e-mail notification.

javax.mail.SendFailedException: Sending failed;
  nested exception is:
        class javax.mail.MessagingException: Could not connect to SMTP host: 
mailhost.ti.com, port: 25;
  nested exception is:
        java.net.NoRouteToHostException: Operation timed out: no further information

        at javax.mail.Transport.send0(Transport.java:218)

        at javax.mail.Transport.send(Transport.java:80)

        at org.apache.log4j.net.SMTPAppender.sendBuffer(Unknown Source)

        at org.apache.log4j.net.SMTPAppender.append(Unknown Source)

        at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:221)

        at 
org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:57)

        at org.apache.log4j.Category.callAppenders(Category.java:187)

        at org.apache.log4j.Category.forcedLog(Category.java:372)

        at org.apache.log4j.Category.error(Category.java:286)

        at com.ti.semi.gui.SemiFileViewerFrame$4.finished(SemiFileViewerFrame.java:262)

        at com.ti.rts.gui.SwingWorker$1.run(SwingWorker.java:102)

        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:154)

        at java.awt.EventQueue.dispatchEvent(EventQueue.java:317)

        at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:103)

        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

        at java.awt.EventDispatchThread.run(EventDispatchThread.java:84)

--------------------END Stack trace---------------------------------------------


I assumed the error would be caught and the log info would be forwarded to
the fallback appender, but no info is written.  My XML config file is:


--------------------BEGIN CONFIG FILE---------------------------------

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<!-- ========================================================== -->
<!-- Sample SMTPAppender configuration using the PatternLayout  -->
<!-- ========================================================== -->

<log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'>

  <renderer renderedClass="com.ti.semi.util.KeyValue" 
renderingClass="com.ti.semi.util.KeyValueRenderer"/>
 
  <appender name="EMAIL" class="org.apache.log4j.net.SMTPAppender">
    <errorHandler class="org.apache.log4j.varia.FallbackErrorHandler">
      <root-ref/>
      <appender-ref ref="FALLBACK" />
    </errorHandler> 

    <param name="EvaluatorClass" 
value="com.ti.semi.gui.EmailTriggeringEventEvaluator"/>
    <param name="SMTPHost" value="mailhost.ti.com"/>
    <param name="To" value="[EMAIL PROTECTED]"/>
    <param name="From" value="[EMAIL PROTECTED]"/>
    <param name="Subject" value="RTS_APPLICATION=SemiViewer RTS_VERSION=1.0"/>
    <layout class="org.apache.log4j.HTMLLayout"/>
  </appender>
  
  <appender name="FALLBACK" class="org.apache.log4j.FileAppender">
    <param name="File" value="${user.home}/.rts/SemiViewer.fallback"/>
    <param name="Append" value="true"/>
    <layout class="org.apache.log4j.xml.XMLLayout"/>
  </appender>

  <root>
    <level value ="info"/>
    <appender-ref ref="EMAIL" />
   </root>  
</log4j:configuration>
----------------------------------------End Config file-------------------------------

Can anyone help me?

Thanks in advance,
Don McClean

--
To unsubscribe, e-mail:   <mailto:log4j-user-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:log4j-user-help@;jakarta.apache.org>

Reply via email to