--- CircuitBreaker/src/dk/thoerup/circuitbreaker/LoggingCircuitBreaker.java 2011/04/15 10:27:04 1292 +++ CircuitBreaker/src/dk/thoerup/circuitbreaker/LoggingCircuitBreaker.java 2011/04/16 11:11:07 1293 @@ -1,7 +1,9 @@ package dk.thoerup.circuitbreaker; -import java.util.*; -import dk.thoerup.circuitbreaker.notification.*; +import java.util.Date; +import java.util.LinkedList; + +import dk.thoerup.circuitbreaker.notification.Notifier; public class LoggingCircuitBreaker extends AccountingCircuitBreaker { @@ -11,12 +13,30 @@ public class LogEntry { public long time; - public Notifier.Event event; + public Notifier.Event event; + public int count = 0; public LogEntry(Notifier.Event evnt) { this.event = evnt; this.time = System.currentTimeMillis(); } + + public void newRetrip() {// + count++; + time = System.currentTimeMillis(); + } + + @Override + public String toString() { + + String str = new Date(time).toString() + (" : ") + event; + + if (event == Notifier.Event.BreakerRetripped) { + str += ( ", " + count + " re-trips" ); + } + + return str ; + } } @@ -32,13 +52,13 @@ addEntry(Notifier.Event.BreakerTripped); } -/* don't log retrips - they are not as interesting as trips and resets + @Override public void retripBreaker() { super.retripBreaker(); addEntry(Notifier.Event.BreakerRetripped); } -*/ + @Override public void reset() { @@ -48,9 +68,16 @@ private void addEntry(Notifier.Event event) { synchronized(this) { - log.addFirst( new LogEntry(event) ); - if(log.size() > maxSize) { - log.removeLast(); + + if (log.getFirst().event != Notifier.Event.BreakerRetripped) { + + log.addFirst( new LogEntry(event) ); + if(log.size() > maxSize) { + log.removeLast(); + } + + } else { + log.getFirst().newRetrip(); } } }