Index: /code/branches/unity_build/src/libraries/core/Core.cc
===================================================================
--- /code/branches/unity_build/src/libraries/core/Core.cc	(revision 8517)
+++ /code/branches/unity_build/src/libraries/core/Core.cc	(revision 8518)
@@ -232,15 +232,37 @@
     }
 
+    namespace DefaultLogLevels
+    {
+        struct List
+        {
+            OutputLevel::Value logFile;
+            OutputLevel::Value ioConsole;
+            OutputLevel::Value inGameConsole;
+        };
+
+        using namespace OutputLevel;
+        static const List Dev  = { Debug, Info,  Info  };
+        static const List User = { Info,  Error, Error };
+    }
+
     //! Function to collect the SetConfigValue-macro calls.
     void Core::setConfigValues()
     {
-#ifdef ORXONOX_RELEASE
-        const unsigned int defaultLevelLogFile = 3;
-#else
-        const unsigned int defaultLevelLogFile = 4;
-#endif
-        SetConfigValueExternal(softDebugLevelLogFile_, "OutputHandler", "softDebugLevelLogFile", defaultLevelLogFile)
-            .description("The maximum level of debug output shown in the log file");
-        OutputHandler::getInstance().setSoftDebugLevel("LogFile", this->softDebugLevelLogFile_);
+        // Choose the default levels according to the path Orxonox was started (build directory or not)
+        DefaultLogLevels::List defaultLogLevels = (PathConfig::buildDirectoryRun() ? DefaultLogLevels::Dev : DefaultLogLevels::User);
+
+        SetConfigValueExternal(debugLevelLogFile_, "OutputHandler", "debugLevelLogFile_", defaultLogLevels.logFile)
+            .description("The maximum level of debug output written to the log file");
+        OutputHandler::getInstance().setSoftDebugLevel("LogFile", debugLevelLogFile_);
+
+        SetConfigValueExternal(debugLevelIOConsole_, "OutputHandler", "debugLevelIOConsole_", defaultLogLevels.ioConsole)
+            .description("The maximum level of debug output shown in the IO console");
+        OutputHandler::getInstance().setSoftDebugLevel("IOConsole", debugLevelIOConsole_);
+        // In case we don't start the IOConsole, also configure that simple listener
+        OutputHandler::getInstance().setSoftDebugLevel("Console", debugLevelIOConsole_);
+
+        SetConfigValueExternal(debugLevelIOConsole_, "OutputHandler", "debugLevelInGameConsole_", defaultLogLevels.inGameConsole)
+            .description("The maximum level of debug output shown in the in-game console");
+        OutputHandler::getInstance().setSoftDebugLevel("InGameConsole", debugLevelInGameConsole_);
 
         SetConfigValue(bDevMode_, PathConfig::buildDirectoryRun())
Index: /code/branches/unity_build/src/libraries/core/Core.h
===================================================================
--- /code/branches/unity_build/src/libraries/core/Core.h	(revision 8517)
+++ /code/branches/unity_build/src/libraries/core/Core.h	(revision 8518)
@@ -128,5 +128,7 @@
 
             bool                      bGraphicsLoaded_;
-            int                       softDebugLevelLogFile_;      //!< The debug level for the log file (belongs to OutputHandler)
+            int                       debugLevelLogFile_;          //!< The debug level for the log file (belongs to OutputHandler)
+            int                       debugLevelIOConsole_;        //!< The debug level for the IO console (belongs to OutputHandler)
+            int                       debugLevelInGameConsole_;    //!< The debug level for the in game console (belongs to OutputHandler)
             std::string               language_;                   //!< The language
             bool                      bInitRandomNumberGenerator_; //!< If true, srand(time(0)) is called
Index: /code/branches/unity_build/src/libraries/core/command/Shell.cc
===================================================================
--- /code/branches/unity_build/src/libraries/core/command/Shell.cc	(revision 8517)
+++ /code/branches/unity_build/src/libraries/core/command/Shell.cc	(revision 8518)
@@ -118,13 +118,4 @@
         setConfigValueGeneric(this, &commandHistory_, ConfigFileType::CommandHistory, "Shell", "commandHistory_", std::vector<std::string>());
         SetConfigValue(cacheSize_s, 32);
-
-#ifdef ORXONOX_RELEASE
-        const unsigned int defaultLevel = 1;
-#else
-        const unsigned int defaultLevel = 3;
-#endif
-        SetConfigValueExternal(softDebugLevel_, "OutputHandler", "softDebugLevel" + this->consoleName_, defaultLevel)
-            .description("The maximal level of debug output shown in the Shell");
-        this->setSoftDebugLevel(this->softDebugLevel_);
     }
 
Index: /code/branches/unity_build/src/libraries/core/command/Shell.h
===================================================================
--- /code/branches/unity_build/src/libraries/core/command/Shell.h	(revision 8517)
+++ /code/branches/unity_build/src/libraries/core/command/Shell.h	(revision 8518)
@@ -197,5 +197,4 @@
             unsigned int              historyOffset_;       ///< The command history is a circular buffer, this variable defines the current write-offset
             std::vector<std::string>  commandHistory_;      ///< The history of commands that were entered by the user
-            int                       softDebugLevel_;      ///< The maximum level of output that is displayed in the shell (will be passed to OutputListener to filter output)
             static unsigned int       cacheSize_s;          ///< The maximum cache size of the CommandExecutor - this is stored here for better readability of the config file and because CommandExecutor is no OrxonoxClass
     };
Index: /code/branches/unity_build/src/libraries/util/Debug.h
===================================================================
--- /code/branches/unity_build/src/libraries/util/Debug.h	(revision 8517)
+++ /code/branches/unity_build/src/libraries/util/Debug.h	(revision 8518)
@@ -83,6 +83,4 @@
 #ifdef ORXONOX_RELEASE
     const int hardDebugLevel = OutputLevel::Verbose;
-#elif defined(NDEBUG)
-    const int hardDebugLevel = OutputLevel::Verbose;
 #else
     //! Maximum level for debug output that should be even processed at run time
Index: /code/branches/unity_build/src/libraries/util/OutputHandler.cc
===================================================================
--- /code/branches/unity_build/src/libraries/util/OutputHandler.cc	(revision 8517)
+++ /code/branches/unity_build/src/libraries/util/OutputHandler.cc	(revision 8518)
@@ -157,5 +157,5 @@
         //! Only assigns the output stream with std::cout
         ConsoleWriter()
-            : OutputListener("consoleLog")
+            : OutputListener("Console")
         {
             this->outputStream_ = &std::cout;
@@ -215,19 +215,22 @@
         : outputLevel_(OutputLevel::Verbose)
     {
+        // Note: These levels only concern startup before orxonox.ini is read.
 #ifdef ORXONOX_RELEASE
-        const OutputLevel::Value defaultLevelConsole = OutputLevel::Error;
-        const OutputLevel::Value defaultLevelLogFile = OutputLevel::Info;
+        const OutputLevel::Value initialLevelConsole = OutputLevel::Error;
 #else
-        const OutputLevel::Value defaultLevelConsole = OutputLevel::Info;
-        const OutputLevel::Value defaultLevelLogFile = OutputLevel::Debug;
+        const OutputLevel::Value initialLevelConsole = OutputLevel::Info;
 #endif
+        // Use high log level because we rewrite the log file anyway with the
+        // correct level. But if Orxonox were to crash before that, we might be
+        // grateful to have a high debug level, esp. for releases.
+        const OutputLevel::Value intialLevelLogFile = OutputLevel::Debug;
 
         this->logFile_ = new LogFileWriter();
         // Use default level until we get the configValue from the Core
-        this->logFile_->softDebugLevel_ = defaultLevelLogFile;
+        this->logFile_->softDebugLevel_ = intialLevelLogFile;
         this->registerOutputListener(this->logFile_);
 
         this->consoleWriter_ = new ConsoleWriter();
-        this->consoleWriter_->softDebugLevel_ = defaultLevelConsole;
+        this->consoleWriter_->softDebugLevel_ = initialLevelConsole;
         this->registerOutputListener(this->consoleWriter_);
 
Index: /code/branches/unity_build/src/libraries/util/OutputHandler.h
===================================================================
--- /code/branches/unity_build/src/libraries/util/OutputHandler.h	(revision 8517)
+++ /code/branches/unity_build/src/libraries/util/OutputHandler.h	(revision 8518)
@@ -257,10 +257,4 @@
         //! Returns the soft debug level of the listener
         int getSoftDebugLevel() const { return this->softDebugLevel_; }
-        //! Sets the soft debug level of the listener
-        void setSoftDebugLevel(int level)
-        {
-            this->softDebugLevel_ = level;
-            OutputHandler::getInstance().setSoftDebugLevel(this->name_, level);
-        }
 
     protected:
