Index: trunk/quest-runner/src/main/java/de/ugoe/cs/quest/log4j/Log4JLogger.java
===================================================================
--- trunk/quest-runner/src/main/java/de/ugoe/cs/quest/log4j/Log4JLogger.java	(revision 674)
+++ trunk/quest-runner/src/main/java/de/ugoe/cs/quest/log4j/Log4JLogger.java	(revision 676)
@@ -1,2 +1,3 @@
+
 package de.ugoe.cs.quest.log4j;
 
@@ -20,100 +21,108 @@
  * @version 1.0
  */
-public class Log4JLogger implements IErrorListener, ITraceListener,
-		IExceptionListener, ICommandListener {
+public class Log4JLogger implements IErrorListener, ITraceListener, IExceptionListener,
+    ICommandListener
+{
 
-	/**
-	 * <p>
-	 * Reference to the logger.
-	 * </p>
-	 */
-	Logger logger;
+    /**
+     * <p>
+     * Reference to the logger.
+     * </p>
+     */
+    Logger logger;
 
-	/**
-	 * <p>
-	 * Constructor. Creates a new Log4JLogger and registers the implemented
-	 * listener with the {@link Console}.
-	 * </p>
-	 */
-	public Log4JLogger() {
-		PropertyConfigurator.configure("data/log4j.properties");
-		logger = Logger.getLogger("de.ugoe.cs.quest");
-		Console.getInstance().registerErrorListener(this);
-		Console.getInstance().registerTraceListener(this);
-		Console.getInstance().registerExceptionListener(this);
-		Console.getInstance().registerCommandListener(this);
-	}
+    /**
+     * <p>
+     * This is the trace level according to the Java logger API. We use this instead of the log4j
+     * levels themselves for the logging.
+     * </p>
+     */
+    Level traceLevel;
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * de.ugoe.cs.util.console.listener.ICommandListener#commandNotification
-	 * (java.lang.String)
-	 */
-	@Override
-	public void commandNotification(String command) {
-		logger.info("Command executed: " + command);
-	}
+    /**
+     * <p>
+     * Constructor. Creates a new Log4JLogger and registers the implemented listener with the
+     * {@link Console}.
+     * </p>
+     * @param traceLevel tracing level
+     */
+    public Log4JLogger(Level traceLevel) {
+        PropertyConfigurator.configure("data/log4j.properties");
+        logger = Logger.getLogger("de.ugoe.cs.quest");
+        logger.setLevel(convertToLog4JLevel(traceLevel));
+        this.traceLevel = traceLevel;
+        Console.getInstance().registerErrorListener(this);
+        Console.getInstance().registerTraceListener(this);
+        Console.getInstance().registerExceptionListener(this);
+        Console.getInstance().registerCommandListener(this);
+    }
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * de.ugoe.cs.util.console.listener.IExceptionListener#printStacktrace(java
-	 * .lang.Exception)
-	 */
-	@Override
-	public void logException(Exception e) {
-		logger.error("", e);
-	}
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.util.console.listener.ICommandListener#commandNotification (java.lang.String)
+     */
+    @Override
+    public void commandNotification(String command) {
+        logger.info("Command executed: " + command);
+    }
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * de.ugoe.cs.util.console.listener.ITraceListener#traceMsg(java.lang.String
-	 * )
-	 */
-	@Override
-	public void traceMsg(String traceMessage, Level level) {
-	    logger.log(convertToLog4JLevel(level), traceMessage);
-	}
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.util.console.listener.IExceptionListener#printStacktrace(java
+     * .lang.Exception)
+     */
+    @Override
+    public void logException(Exception e) {
+        logger.error("", e);
+    }
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * de.ugoe.cs.util.console.listener.IErrorListener#errorMsg(java.lang.String
-	 * )
-	 */
-	@Override
-	public void errorMsg(String errMessage) {
-		logger.error(errMessage);
-	}
-	
-	/**
-	 * <p>
-	 * Converts the log level described by {@link Level} into a {@link org.apache.log4j.Level}.
-	 * </p>
-	 *
-	 * @param level java.util.logger.Level severity
-	 * @return org.apache.log4j.Level severity
-	 */
-	private org.apache.log4j.Level convertToLog4JLevel(Level level) {
-	    if(level==Level.OFF) {
-	        return org.apache.log4j.Level.OFF;
-	    }
-	    if(level==Level.SEVERE) {
-	        return org.apache.log4j.Level.FATAL;
-	    }
-	    if(level==Level.WARNING) {
-	        return org.apache.log4j.Level.WARN;
-	    }
-	    if(level==Level.INFO || level==Level.CONFIG) {
-	        return org.apache.log4j.Level.INFO;
-	    }
-	    // remaining levels: FINE, FINER, FINEST, ALL
-	    return org.apache.log4j.Level.ALL;
-	}
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.util.console.listener.ITraceListener#traceMsg(java.lang.String )
+     */
+    @Override
+    public void traceMsg(String traceMessage, Level level) {
+        if( level.intValue()>=traceLevel.intValue()) {
+            logger.log(convertToLog4JLevel(level), traceMessage);
+        }
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.util.console.listener.IErrorListener#errorMsg(java.lang.String )
+     */
+    @Override
+    public void errorMsg(String errMessage) {
+        logger.error(errMessage);
+    }
+
+    /**
+     * <p>
+     * Converts the log level described by {@link Level} into a {@link org.apache.log4j.Level}.
+     * </p>
+     * 
+     * @param level
+     *            java.util.logger.Level severity
+     * @return org.apache.log4j.Level severity
+     */
+    private org.apache.log4j.Level convertToLog4JLevel(Level level) {
+        if (level == Level.OFF) {
+            return org.apache.log4j.Level.OFF;
+        }
+        if (level == Level.SEVERE) {
+            return org.apache.log4j.Level.FATAL;
+        }
+        if (level == Level.WARNING) {
+            return org.apache.log4j.Level.WARN;
+        }
+        if (level == Level.INFO || level == Level.CONFIG) {
+            return org.apache.log4j.Level.INFO;
+        }
+        // remaining levels: FINE, FINER, FINEST, ALL
+        return org.apache.log4j.Level.ALL;
+    }
 }
Index: trunk/quest-runner/src/main/java/de/ugoe/cs/quest/ui/Runner.java
===================================================================
--- trunk/quest-runner/src/main/java/de/ugoe/cs/quest/ui/Runner.java	(revision 674)
+++ trunk/quest-runner/src/main/java/de/ugoe/cs/quest/ui/Runner.java	(revision 676)
@@ -36,8 +36,4 @@
     };
 
-    public enum LOG4JTYPE {
-        enable, disable
-    }
-
     /**
      * <p>
@@ -65,7 +61,7 @@
 
         OptionParser parser = new OptionParser();
-        OptionSpec<LOG4JTYPE> log4j =
-            parser.accepts("log4j", "Allowed values: enable, disable").withRequiredArg()
-                .ofType(LOG4JTYPE.class).defaultsTo(LOG4JTYPE.enable);
+        OptionSpec<Level> log4j =
+            parser.accepts("log4j", "Allowed values: OFF, SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST, ALL").withRequiredArg()
+                .ofType(Level.class).defaultsTo(Level.INFO);
         OptionSpec<UITYPE> ui =
             parser.accepts("ui", "Allowed values: text, swt").withRequiredArg()
@@ -78,14 +74,6 @@
         List<String> startupCommands = options.nonOptionArguments();
         try {
-            switch (options.valueOf(log4j))
-            {
-                case enable:
-                    new Log4JLogger();
-                    break;
-                case disable:
-                    // do nothing
-                    break;
-                default:
-                    throw new AssertionError("reached source code that should be unreachable");
+            if(options.valueOf(log4j)!=Level.OFF) {
+                new Log4JLogger(options.valueOf(log4j));
             }
 
