Index: /trunk/JavaHelperLib/src/de/ugoe/cs/util/console/Console.java
===================================================================
--- /trunk/JavaHelperLib/src/de/ugoe/cs/util/console/Console.java	(revision 249)
+++ /trunk/JavaHelperLib/src/de/ugoe/cs/util/console/Console.java	(revision 250)
@@ -71,5 +71,5 @@
 	 * </p>
 	 */
-	private static Console theInstance = null;
+	private static Console theInstance = new Console();
 
 	/**
@@ -82,7 +82,4 @@
 	 */
 	public static Console getInstance() {
-		if (theInstance == null) {
-			theInstance = new Console();
-		}
 		return theInstance;
 	}
@@ -90,8 +87,27 @@
 	/**
 	 * <p>
+	 * Resets the Console by creating a new instance that has no registered
+	 * observers.
+	 * </p>
+	 */
+	public static void reset() {
+		theInstance.init();
+	}
+
+	/**
+	 * <p>
 	 * Creates a new Console. Private to prevent multiple instances (Singleton).
 	 * </p>
 	 */
 	private Console() {
+		init();
+	}
+
+	/**
+	 * <p>
+	 * Initializes the console.
+	 * </p>
+	 */
+	private void init() {
 		outputListener = new LinkedHashSet<IOutputListener>();
 		errorListener = new LinkedHashSet<IErrorListener>();
@@ -257,4 +273,69 @@
 	/**
 	 * <p>
+	 * Checks if a listener is registered.
+	 * </p>
+	 * 
+	 * @param listener
+	 *            listener that is checked
+	 * @return true, is listener is registered; false, otherwise
+	 */
+	public boolean hasOutputListener(IOutputListener listener) {
+		return outputListener.contains(listener);
+	}
+
+	/**
+	 * <p>
+	 * Checks if a listener is registered.
+	 * </p>
+	 * 
+	 * @param listener
+	 *            listener that is checked
+	 * @return true, is listener is registered; false, otherwise
+	 */
+	public boolean hasErrorListener(IErrorListener listener) {
+		return errorListener.contains(listener);
+	}
+
+	/**
+	 * <p>
+	 * Checks if a listener is registered.
+	 * </p>
+	 * 
+	 * @param listener
+	 *            listener that is checked
+	 * @return true, is listener is registered; false, otherwise
+	 */
+	public boolean hasTraceListener(ITraceListener listener) {
+		return traceListener.contains(listener);
+	}
+
+	/**
+	 * <p>
+	 * Checks if a listener is registered.
+	 * </p>
+	 * 
+	 * @param listener
+	 *            listener that is checked
+	 * @return true, is listener is registered; false, otherwise
+	 */
+	public boolean hasCommandListener(ICommandListener listener) {
+		return commandListener.contains(listener);
+	}
+
+	/**
+	 * <p>
+	 * Checks if a listener is registered.
+	 * </p>
+	 * 
+	 * @param listener
+	 *            listener that is checked
+	 * @return true, is listener is registered; false, otherwise
+	 */
+	public boolean hasExceptionListener(IExceptionListener listener) {
+		return exceptionListener.contains(listener);
+	}
+
+	/**
+	 * <p>
 	 * Sends a message to all observers containing the message that was passed
 	 * to this function.
@@ -265,7 +346,4 @@
 	 */
 	public static void print(String msg) {
-		if (theInstance == null) {
-			getInstance();
-		}
 		for (IOutputListener observer : theInstance.outputListener) {
 			observer.outputMsg(msg);
@@ -283,7 +361,4 @@
 	 */
 	public static void println(String msg) {
-		if (theInstance == null) {
-			getInstance();
-		}
 		for (IOutputListener observer : theInstance.outputListener) {
 			observer.outputMsg(msg + StringTools.ENDLINE);
@@ -301,7 +376,4 @@
 	 */
 	public static void printerr(String errMsg) {
-		if (theInstance == null) {
-			getInstance();
-		}
 		for (IErrorListener observer : theInstance.errorListener) {
 			observer.errorMsg(errMsg);
@@ -319,7 +391,4 @@
 	 */
 	public static void printerrln(String errMsg) {
-		if (theInstance == null) {
-			getInstance();
-		}
 		for (IErrorListener observer : theInstance.errorListener) {
 			observer.errorMsg(errMsg + StringTools.ENDLINE);
@@ -336,7 +405,4 @@
 	 */
 	public static void logException(Exception e) {
-		if (theInstance == null) {
-			getInstance();
-		}
 		for (IExceptionListener observer : theInstance.exceptionListener) {
 			observer.logException(e);
@@ -354,7 +420,4 @@
 	 */
 	public static void trace(String traceMsg) {
-		if (theInstance == null) {
-			getInstance();
-		}
 		for (ITraceListener observer : theInstance.traceListener) {
 			observer.traceMsg(traceMsg);
@@ -373,7 +436,4 @@
 	 */
 	public static void traceln(String traceMsg) {
-		if (theInstance == null) {
-			getInstance();
-		}
 		for (ITraceListener observer : theInstance.traceListener) {
 			observer.traceMsg(traceMsg + StringTools.ENDLINE);
@@ -390,7 +450,4 @@
 	 */
 	static void commandNotification(String command) {
-		if (theInstance == null) {
-			getInstance();
-		}
 		for (ICommandListener observer : theInstance.commandListener) {
 			observer.commandNotification(command);
Index: /trunk/JavaHelperLib/src/de/ugoe/cs/util/console/FileOutputListener.java
===================================================================
--- /trunk/JavaHelperLib/src/de/ugoe/cs/util/console/FileOutputListener.java	(revision 249)
+++ /trunk/JavaHelperLib/src/de/ugoe/cs/util/console/FileOutputListener.java	(revision 250)
@@ -39,5 +39,5 @@
 	 * </p>
 	 */
-	FileWriter writer;
+	FileWriter writer = null;
 
 	/**
@@ -78,9 +78,12 @@
 	public void stop() {
 		Console.getInstance().removeOutputListener(this);
-		try {
-			writer.close();
-		} catch (IOException e) {
-			Console.printerrln("Failed to close file " + filename + ": "
-					+ e.getMessage());
+		if( writer!=null ) {
+			try {
+				writer.close();
+				writer = null;
+			} catch (IOException e) {
+				Console.printerrln("Failed to close file " + filename + ": "
+						+ e.getMessage());
+			}
 		}
 	}
@@ -95,14 +98,27 @@
 	@Override
 	public void outputMsg(String newMessage) {
-		try {
-			writer.write(newMessage);
-		} catch (IOException e) {
-			if (!failureLogged) {
-				Console.printerrln("FileOutpustListener for file " + filename
-						+ " broken: " + e.getMessage());
-				failureLogged = true;
+		if( writer!=null ) {
+			try {
+				writer.write(newMessage);
+			} catch (IOException e) {
+				if (!failureLogged) {
+					Console.printerrln("FileOutpustListener for file " + filename
+							+ " broken: " + e.getMessage());
+					failureLogged = true;
+				}
 			}
 		}
 	}
 
+	/**
+	 * <p>
+	 * Returns the name of the log file used by this listener.
+	 * </p>
+	 * 
+	 * @return name of the log file
+	 */
+	public String getFilename() {
+		return filename;
+	}
+
 }
Index: /trunk/JavaHelperLib/src/de/ugoe/cs/util/console/TextConsole.java
===================================================================
--- /trunk/JavaHelperLib/src/de/ugoe/cs/util/console/TextConsole.java	(revision 249)
+++ /trunk/JavaHelperLib/src/de/ugoe/cs/util/console/TextConsole.java	(revision 250)
@@ -126,4 +126,14 @@
 		return new String(buffer);
 	}
+	
+	/**
+	 * <p>
+	 * Configures if the debug mode of the text console is enabled.
+	 * </p>
+	 * @param debug if true, debug mode is enabled. 
+	 */
+	public void setDebug(boolean debug) {
+		debugMode = debug;
+	}
 
 }
