
Author: seb Date: Fri Feb 23 18:10:27 2007 New Revision: 1349 Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java logbackPDE/trunk/plugins/ConsolePlugin/todo.txt Log: Changed the way we deal with streams. This version should resist to a flow of 100'000 logging events sent without pause :) Updated todo list Modified: logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java ============================================================================== --- logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java (original) +++ logbackPDE/trunk/plugins/ConsolePlugin/src/main/java/ch/qos/logback/eclipse/views/LoggingEventContentProvider.java Fri Feb 23 18:10:27 2007 @@ -14,6 +14,7 @@ import ch.qos.logback.classic.Level; import ch.qos.logback.classic.spi.LoggingEvent; +import ch.qos.logback.eclipse.PluginLogger; import ch.qos.logback.eclipse.model.LoggingEventManagerEvent; import ch.qos.logback.eclipse.model.LoggingEventManagerListener; @@ -24,108 +25,76 @@ */ public class LoggingEventContentProvider implements LoggingEventManagerListener { -// private MessageConsoleStream redStream; -// private MessageConsoleStream blackStream; -// private int count = 0; -// private static int MAX_COUNT = 1000; - private MessageConsole console; + private MessageConsoleStream redStream; + private MessageConsoleStream blackStream; private TextConsoleViewer viewer; private Color cachedRed; private Color cachedBlack; private LabelProvider labelProvider; - + public LoggingEventContentProvider(MessageConsole console, TextConsoleViewer viewer) { Display display = Display.getCurrent(); - cachedRed = new Color(display, 255, 0,0); - cachedBlack = new Color(display, 0, 0,0); - this.console = console; + cachedRed = new Color(display, 255, 0, 0); + cachedBlack = new Color(display, 0, 0, 0); this.viewer = viewer; -// redStream = console.newMessageStream(); -// redStream.setColor(cachedRed); -// blackStream = console.newMessageStream(); -// blackStream.setColor(cachedBlack); + + redStream = console.newMessageStream(); + redStream.setColor(cachedRed); + blackStream = console.newMessageStream(); + blackStream.setColor(cachedBlack); } WorkbenchJob revealJob = new WorkbenchJob("Reveal End of Document") {//$NON-NLS-1$ public IStatus runInUIThread(IProgressMonitor monitor) { - StyledText textWidget = viewer.getTextWidget(); - if (textWidget != null) { - int lineCount = textWidget.getLineCount(); - textWidget.setTopIndex(lineCount - 1); - } - return Status.OK_STATUS; + StyledText textWidget = viewer.getTextWidget(); + if (textWidget != null) { + int lineCount = textWidget.getLineCount(); + textWidget.setTopIndex(lineCount - 1); + } + return Status.OK_STATUS; } -}; + }; public void dispose() { cachedRed.dispose(); cachedBlack.dispose(); -// try { -// redStream.close(); -// blackStream.close(); -// } catch (Exception e) { -// PluginLogger.logError(e); -// } + try { + redStream.close(); + blackStream.close(); + } catch (Exception e) { + PluginLogger.logError(e); + } } public void loggingEventsChanged(final LoggingEventManagerEvent event) { - - // If this is the UI thread, then make the change - if (Display.getCurrent() != null) { - updateViewer(event); - return; - } - - // otherwise redirect to execute on the UI thread - Display.getDefault().asyncExec(new Runnable() { - public void run() { - updateViewer(event); - } - }); + updateViewer(event); } - private void updateViewer(final LoggingEventManagerEvent event) { + private void updateViewer(final LoggingEventManagerEvent event) { LoggingEvent le = (LoggingEvent) event.getItemsAdded()[0]; -// if (le.getLevel().isGreaterOrEqual(Level.WARN)) { -// redStream.println(labelProvider.getText(le)); -// } else { -// blackStream.println(labelProvider.getText(le)); -// } -// count ++; -// if (count > MAX_COUNT) { -// flushStreams(); -// } - - MessageConsoleStream stream = console.newMessageStream(); - //viewer.setRedraw(false); try { + flushStreams(); if (le.getLevel().isGreaterOrEqual(Level.WARN)) { - stream.setColor(cachedRed); + redStream.println(labelProvider.getText(le)); + } else { + blackStream.println(labelProvider.getText(le)); } - stream.println(labelProvider.getText(le)); - stream.close(); } catch (Exception e) { - //? + PluginLogger.logError(e); } - //viewer.revealRange(viewer.getBottomIndexEndOffset(), 1); - revealEndOfDocument(); - //viewer.setRedraw(true); - } - -// private void flushStreams() { -// try { -// blackStream.flush(); -// redStream.flush(); -// } catch (Exception e) { -// PluginLogger.logError(e); -// } -// } - - private void revealEndOfDocument() { revealJob.schedule(50); } - + + private void flushStreams() { + try { + blackStream.flush(); + redStream.flush(); + } catch (Exception e) { + PluginLogger.logError(e); + } + } + public void setLabelProvider(LabelProvider provider) { this.labelProvider = provider; } Modified: logbackPDE/trunk/plugins/ConsolePlugin/todo.txt ============================================================================== --- logbackPDE/trunk/plugins/ConsolePlugin/todo.txt (original) +++ logbackPDE/trunk/plugins/ConsolePlugin/todo.txt Fri Feb 23 18:10:27 2007 @@ -6,4 +6,6 @@ OK -> Make the viewer always display the latest lines added -Is it possible to use the logger without bringing the ErrorLog view up? \ No newline at end of file +Is it possible to use the logger without bringing the ErrorLog view up? + +Allow the user to change the socket's port \ No newline at end of file