svn commit: r630 - logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net

Author: seb Date: Fri Oct 6 17:26:07 2006 New Revision: 630 Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/SMTPAppender.java Log: - modified default triggering behaviour - updated javadoc accordingly Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/SMTPAppender.java ============================================================================== --- logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/SMTPAppender.java (original) +++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/SMTPAppender.java Fri Oct 6 17:26:07 2006 @@ -29,8 +29,12 @@ * keeps memory requirements at a reasonable level while still delivering useful * application context. * <p> - * By default, the email is sent everything an event has a status code of - * <em>500 (server error) or higher</em>. + * By default, the email is sent everytime an event has a status code of + * <em>500 (server error) or higher</em>. In order not to flood one's mailbox, + * an email will be sent only if the previous email was sent more that 24 hours ago. + * <p> + * This behaviour can be easily bypassed either by modifying this class, or by + * imlementing a new <code>TriggeringPolicy</code>. * <p> * @author Ceki Gülcü * @author Sébastien Pennec @@ -117,16 +121,30 @@ private boolean started; private static final Integer TRIGGERING_STATUS_CODE = 500; + private static final long ONE_DAY = 1000*60*60*24; + private static long LAST_TRIGGER_DATE = 0L; + + /** * Is this <code>event</code> the e-mail triggering event? * * <p> * This method returns <code>true</code>, if the event status code * is 500 (server error) or higher. Otherwise it returns <code>false</code>. + * + * Once an email is sent, the next one will not be sent unless a certain amount + * of time passed. */ public boolean isTriggeringEvent(File file, Object eventObject) { AccessEvent event = (AccessEvent) eventObject; - return TRIGGERING_STATUS_CODE.compareTo(event.getStatusCode()) <= 0; + + if (TRIGGERING_STATUS_CODE.compareTo(event.getStatusCode()) <= 0) { + if (System.currentTimeMillis() >= LAST_TRIGGER_DATE + ONE_DAY) { + LAST_TRIGGER_DATE = System.currentTimeMillis(); + return true; + } + } + return false; } public boolean isStarted() {
participants (1)
-
noreply.seb@qos.ch