diff --git a/src/App/Application.cpp b/src/App/Application.cpp index 2353c2bff8..86aadebd17 100644 --- a/src/App/Application.cpp +++ b/src/App/Application.cpp @@ -1536,8 +1536,10 @@ void Application::initConfig(int argc, char ** argv) // Init console =========================================================== Base::PyGILStateLocker lock; - _pConsoleObserverStd = new ConsoleObserverStd(); - Console().AttachObserver(_pConsoleObserverStd); + if (mConfig["LoggingConsole"] == "1") { + _pConsoleObserverStd = new ConsoleObserverStd(); + Console().AttachObserver(_pConsoleObserverStd); + } if (mConfig["Verbose"] == "Strict") Console().UnsetConsoleMode(ConsoleSingleton::Verbose); diff --git a/src/Main/MainCmd.cpp b/src/Main/MainCmd.cpp index 504b9219f5..5686cdce4e 100644 --- a/src/Main/MainCmd.cpp +++ b/src/Main/MainCmd.cpp @@ -82,6 +82,7 @@ int main( int argc, char ** argv ) // Init phase =========================================================== // sets the default run mode for FC, starts with command prompt if not overridden in InitConfig... App::Application::Config()["RunMode"] = "Exit"; + App::Application::Config()["LoggingConsole"] = "1"; // Inits the Application App::Application::init(argc,argv); diff --git a/src/Main/MainGui.cpp b/src/Main/MainGui.cpp index 3b20a990cd..b153cf0132 100644 --- a/src/Main/MainGui.cpp +++ b/src/Main/MainGui.cpp @@ -187,6 +187,7 @@ int main( int argc, char ** argv ) // sets the default run mode for FC, starts with gui if not overridden in InitConfig... App::Application::Config()["RunMode"] = "Gui"; App::Application::Config()["Console"] = "0"; + App::Application::Config()["LoggingConsole"] = "1"; // Inits the Application #if defined (FC_OS_WIN32) diff --git a/src/Main/MainPy.cpp b/src/Main/MainPy.cpp index fa363c18b8..d746e58832 100644 --- a/src/Main/MainPy.cpp +++ b/src/Main/MainPy.cpp @@ -42,10 +42,12 @@ #include #include +#include // FreeCAD Base header #include +#include #include @@ -228,6 +230,15 @@ PyMOD_INIT_FUNC(FreeCAD) free(argv[0]); free(argv); + Base::EmptySequencer* seq = new Base::EmptySequencer(); + (void)seq; + static Base::RedirectStdOutput stdcout; + static Base::RedirectStdLog stdclog; + static Base::RedirectStdError stdcerr; + std::cout.rdbuf(&stdcout); + std::clog.rdbuf(&stdclog); + std::cerr.rdbuf(&stdcerr); + #if PY_MAJOR_VERSION >= 3 //PyObject* module = _PyImport_FindBuiltin("FreeCAD"); PyObject* modules = PyImport_GetModuleDict();