Hi.

Just ran into this bug as well (Java 1.5, logback 1.0.0, Windows 7).  

It appears that the code in SMTPAppenderBase

      if (eventEvaluator.evaluate(eventObject)) {
        // perform actual sending asynchronously
        SenderRunnable senderRunnable = new SenderRunnable(new 
CyclicBuffer<E>(cb), eventObject);
        context.getExecutorService().execute(senderRunnable);
      }

is properly executed, but as noted the SenderRunable.run() method is not 
invoked (which I have determined by having a break point).

The ThreadPoolExecutor.execute() method (under Oracle Java 1.5) executes:

   public void execute(Runnable command) {
        if (command == null)
            throw new NullPointerException();
        for (;;) {
            if (runState != RUNNING) {
                reject(command);
                return;
            }
            if (poolSize < corePoolSize && addIfUnderCorePoolSize(command))
                return;
            if (workQueue.offer(command))
                return;

and returns (and the SenderRunnable was added to workQueue).  

There is, however, a potential problem of mails being lost.  In the code 
causing me to investigate this, the "log.error("....", e)" is immediately 
followed by a System.exit().  In other words - I will most likely loose most of 
the mails generated by this code as the async process is slower than the 
System.exit().

Is there any way of guaranteeing that all mail has been transported before 
stopping the program?

If not, can I have a flag simply saying "do not run async, run in process" 
which invokes senderRunnable.run() directly instead of delegating to an 
executor?

(also a way of telling the operator that mail has been sent would be nice.  It 
can be as simple as a print statement, similar to

        @Override
        protected void sendBuffer(
                        ch.qos.logback.core.helpers.CyclicBuffer<ILoggingEvent> 
cb,
                        ILoggingEvent lastEventObject) {

                System.out.println("[" + new java.util.Date() + " "
                                + this.getClass().getSimpleName()
                                + " sending e-mail notification with " + 
cb.length()
                                + " events]");

                super.sendBuffer(cb, lastEventObject);
        };
)

Thanks

/Thorbjørn

-----Original Message-----
From: [email protected] [mailto:[email protected]] On 
Behalf Of ceki
Sent: 29. januar 2012 18:49
To: logback users list
Subject: Re: [logback-user] SMTPAppender mail not sent (logback 1.0.0, JDK 1.5)

Hi,

I intend to look into this tomorrow morning.

--
Ceki
http://twitter.com/#!/ceki

On 29.01.2012 17:36, samyem wrote:
>
>
> I am facing the exact same issue. The upgrade stopped sending emails 
> for me as well. For some reason, the Runnable class SMTPAppender's 
> "run" method never gets executed in this new version. Anyone else having this 
> issue?
>
> Thanks,
>
>
> Louis-Félix wrote:
>>
>> Hi,
>>
>> I upgraded to logback 1.0.0 in a web application (tomcat 5, JDK 1.5), 
>> and the ERROR email are not sent anymore from the SMTPAppender.
>> When I rollback my logback-core and logback-classic JARs to version 
>> 0.9.30, it's working again.
>>
>> I have a simple config:
>>
>>      <appender name="courriel"
>> class="ch.qos.logback.classic.net.SMTPAppender">
>>          <smtpHost>smtp.xxx.xx.xx</smtpHost>
>>          <to>[email protected]</to>
>>          <from>[email protected]</from>
>>          <subject>Test</subject>
>>          <cyclicBufferTracker
>> class="ch.qos.logback.core.spi.CyclicBufferTrackerImpl">
>>              <bufferSize>25</bufferSize>
>>          </cyclicBufferTracker>
>>          <layout class="ch.qos.logback.classic.html.HTMLLayout">
>>              <pattern>%date%level%thread%logger%line%message</pattern>
>>          </layout>
>>      </appender>
>>
>> I am using logback 1.0.0 with no problem in an other project (with 
>> JDK 1.6).
>> Is there any known compatibility problem between logback 1.0.0 and 
>> JDK 1.5?
>>
>> Thanks,
>> Louis-Félix
>>

_______________________________________________
Logback-user mailing list
[email protected]
http://mailman.qos.ch/mailman/listinfo/logback-user

_______________________________________________
Logback-user mailing list
[email protected]
http://mailman.qos.ch/mailman/listinfo/logback-user

Reply via email to