svn commit: r1410 - in logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse: model views

Author: seb Date: Wed Mar 7 14:53:45 2007 New Revision: 1410 Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java Log: We now can change the pattern layout and re-fill the console with updated pattern Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java ============================================================================== --- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java (original) +++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/model/LoggingEventManager.java Wed Mar 7 14:53:45 2007 @@ -8,7 +8,6 @@ import java.util.concurrent.TimeUnit; import ch.qos.logback.classic.spi.LoggingEvent; -import ch.qos.logback.core.helpers.CyclicBuffer; /** * This class manages the logging events that are recieved by the plugin. @@ -21,14 +20,16 @@ private static LoggingEventManager manager; - private CyclicBuffer<LoggingEvent> cyclicBuffer; + private static final int MAX_SIZE = 100000; + private static final int MIN_SIZE = 50000; + private List<LoggingEvent> loggingEventList = new ArrayList<LoggingEvent>(); private boolean sendingEvents = true; ScheduledExecutorService scheduledExecutorService; private List<LoggingEventManagerListener> listeners = new ArrayList<LoggingEventManagerListener>(); - + private int lastSentIndex; + private LoggingEventManager() { - cyclicBuffer = new CyclicBuffer<LoggingEvent>(5000); } public static LoggingEventManager getManager() { @@ -37,23 +38,25 @@ return manager; } - public static void shutdown() { - if (manager != null) { - manager = null; - } - } - public void addLoggingEvent(LoggingEvent event) { + //trick to keep the original thread name + event.getThreadName(); + loggingEventList.add(event); + listSizeCheck(); if (sendingEvents) { - fireFavoritesChanged(new LoggingEvent[] { event }, NONE); - } else { - cyclicBuffer.add(event); + sendEvent(event); } } + + private void sendEvent(LoggingEvent event) { + fireFavoritesChanged(new LoggingEvent[] { event }, NONE); + lastSentIndex = loggingEventList.size()-1; + } /** * Listener management */ + public void addLoggingEventManagerListener(LoggingEventManagerListener listener) { if (!listeners.contains(listener)) listeners.add(listener); @@ -71,17 +74,24 @@ } } + /** + * Buffer management + */ + public boolean isSendingEvents() { return sendingEvents; } public void toggleSendEvents() { sendingEvents = !sendingEvents; - emptyBuffer(); + if (sendingEvents) { + emptyBuffer(); + } } private void emptyBuffer() { - if (cyclicBuffer.length() == 0) { + if (lastSentIndex == loggingEventList.size()-1 + || loggingEventList.isEmpty()) { return; } @@ -89,14 +99,52 @@ Runnable runnnable = new Runnable() { + int tmpIndex = lastSentIndex + 1; + public void run() { - LoggingEvent event = cyclicBuffer.get(); - addLoggingEvent(event); + if (tmpIndex >= loggingEventList.size()) { + scheduledExecutorService.shutdownNow(); + } + LoggingEvent event = loggingEventList.get(tmpIndex); + sendEvent(event); + tmpIndex++; } }; scheduledExecutorService.scheduleAtFixedRate(runnnable, 0, 1, TimeUnit.MILLISECONDS); + } + + private void listSizeCheck() { + if (loggingEventList.size() > MAX_SIZE) { + List sub = loggingEventList.subList(0, MIN_SIZE); + loggingEventList.removeAll(sub); + } + } + + public void reSendAllEvents() { + scheduledExecutorService = Executors.newScheduledThreadPool(2); + Runnable runnnable = new Runnable() { + + int tmpIndex = 0; + + public void run() { + if (tmpIndex >= loggingEventList.size()) { + scheduledExecutorService.shutdownNow(); + } + LoggingEvent event = loggingEventList.get(tmpIndex); + sendEvent(event); + tmpIndex++; + } + }; + + scheduledExecutorService.scheduleAtFixedRate(runnnable, + 0, 1, TimeUnit.MILLISECONDS); + } + + public void clearEventList() { + loggingEventList.clear(); + lastSentIndex = 0; } } Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java ============================================================================== --- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java (original) +++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LogbackView.java Wed Mar 7 14:53:45 2007 @@ -101,6 +101,7 @@ public void run() { super.run(); myConsole.clearConsole(); + LoggingEventManager.getManager().clearEventList(); } }; clearConsoleAction.setText("Clear console"); @@ -112,13 +113,12 @@ @Override public void run() { super.run(); - //provider.toggleAutoScroll(); LoggingEventManager.getManager().toggleSendEvents(); updateText(); } private void updateText() { - if (/*provider.isAutoScroll()*/ LoggingEventManager.getManager().isSendingEvents()) { + if (LoggingEventManager.getManager().isSendingEvents()) { this.setText("Turn off auto scroll"); this.setToolTipText("Turn off auto scroll"); } else { @@ -168,6 +168,8 @@ public void updatePattern(String pattern) { labelProvider.updatePattern(pattern); + myConsole.clearConsole(); + LoggingEventManager.getManager().reSendAllEvents(); } public void updateConsoleHighWaterMark(int highWaterMark) {
participants (1)
-
noreply.seb@qos.ch