From c866ad863e5ad78cd5b0070dc5b20a559e02c6ba Mon Sep 17 00:00:00 2001 From: Frederick Roy Date: Wed, 26 Aug 2026 15:21:47 +0900 Subject: [PATCH 1/2] Add a quiet status to MessageHandler, to toggle information message --- .../PerComponentLoggingMessageHandler.cpp | 2 +- .../PerComponentLoggingMessageHandler.h | 2 +- Sofa/framework/Helper/CMakeLists.txt | 1 + .../helper/logging/ClangMessageHandler.cpp | 5 ++- .../sofa/helper/logging/ClangMessageHandler.h | 2 +- .../helper/logging/ConsoleMessageHandler.cpp | 5 ++- .../helper/logging/ConsoleMessageHandler.h | 2 +- .../helper/logging/CountingMessageHandler.cpp | 2 +- .../helper/logging/CountingMessageHandler.h | 2 +- .../logging/ExceptionMessageHandler.cpp | 15 ++++---- .../helper/logging/ExceptionMessageHandler.h | 2 +- .../helper/logging/FileMessageHandler.cpp | 2 +- .../sofa/helper/logging/FileMessageHandler.h | 2 +- .../helper/logging/LoggingMessageHandler.cpp | 2 +- .../helper/logging/LoggingMessageHandler.h | 2 +- .../sofa/helper/logging/MessageHandler.cpp | 38 +++++++++++++++++++ .../src/sofa/helper/logging/MessageHandler.h | 9 ++++- .../helper/logging/RoutingMessageHandler.cpp | 2 +- .../helper/logging/RoutingMessageHandler.h | 2 +- .../helper/logging/SilentMessageHandler.cpp | 2 +- .../helper/logging/SilentMessageHandler.h | 2 +- .../Helper/test/logging/logging_test.cpp | 2 +- .../src/sofa/testing/TestMessageHandler.cpp | 4 +- 23 files changed, 78 insertions(+), 31 deletions(-) create mode 100644 Sofa/framework/Helper/src/sofa/helper/logging/MessageHandler.cpp diff --git a/Sofa/framework/Core/src/sofa/core/logging/PerComponentLoggingMessageHandler.cpp b/Sofa/framework/Core/src/sofa/core/logging/PerComponentLoggingMessageHandler.cpp index d61773fcbbc..03be22c5256 100644 --- a/Sofa/framework/Core/src/sofa/core/logging/PerComponentLoggingMessageHandler.cpp +++ b/Sofa/framework/Core/src/sofa/core/logging/PerComponentLoggingMessageHandler.cpp @@ -29,7 +29,7 @@ namespace sofa::helper::logging::percomponentloggingmessagehandler { -void PerComponentLoggingMessageHandler::process(Message& m) +void PerComponentLoggingMessageHandler::doProcess(Message& m) { const SofaComponentInfo* nfo = dynamic_cast( m.componentInfo().get() ) ; if(nfo != nullptr) diff --git a/Sofa/framework/Core/src/sofa/core/logging/PerComponentLoggingMessageHandler.h b/Sofa/framework/Core/src/sofa/core/logging/PerComponentLoggingMessageHandler.h index 4b889a3b54e..0658090b3f2 100644 --- a/Sofa/framework/Core/src/sofa/core/logging/PerComponentLoggingMessageHandler.h +++ b/Sofa/framework/Core/src/sofa/core/logging/PerComponentLoggingMessageHandler.h @@ -58,7 +58,7 @@ class SOFA_CORE_API PerComponentLoggingMessageHandler : public MessageHandler ~PerComponentLoggingMessageHandler() override {} /// Inherited from MessageHandler - void process(Message& m) override ; + void doProcess(Message& m) override ; std::string getName() const override { return "PerComponentLoggingMessageHandler"; } } ; diff --git a/Sofa/framework/Helper/CMakeLists.txt b/Sofa/framework/Helper/CMakeLists.txt index 5de5b85a719..a59ef06a737 100644 --- a/Sofa/framework/Helper/CMakeLists.txt +++ b/Sofa/framework/Helper/CMakeLists.txt @@ -193,6 +193,7 @@ set(SOURCE_FILES ${SRC_ROOT}/logging/MessageDispatcher.cpp ${SRC_ROOT}/logging/MessageFormatter.cpp ${SRC_ROOT}/logging/ComponentInfo.cpp + ${SRC_ROOT}/logging/MessageHandler.cpp ${SRC_ROOT}/logging/ClangMessageHandler.cpp ${SRC_ROOT}/logging/ClangStyleMessageFormatter.cpp ${SRC_ROOT}/logging/DefaultStyleMessageFormatter.cpp diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/ClangMessageHandler.cpp b/Sofa/framework/Helper/src/sofa/helper/logging/ClangMessageHandler.cpp index ee26f64674c..72fc09ade29 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/ClangMessageHandler.cpp +++ b/Sofa/framework/Helper/src/sofa/helper/logging/ClangMessageHandler.cpp @@ -31,9 +31,10 @@ namespace sofa::helper::logging { - -void ClangMessageHandler::process(Message &m) { +void ClangMessageHandler::doProcess(Message &m) +{ ClangStyleMessageFormatter::getInstance().formatMessage(m, std::cerr) ; } + } // sofa::helper::logging diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/ClangMessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/ClangMessageHandler.h index 8f52793fefe..73fc94ad797 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/ClangMessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/ClangMessageHandler.h @@ -35,7 +35,7 @@ namespace sofa::helper::logging class SOFA_HELPER_API ClangMessageHandler : public MessageHandler { public: - void process(Message &m) override ; + void doProcess(Message &m) override ; std::string getName() const override { return "ClangMessageHandler"; } }; } // namespace sofa::helper::logging diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/ConsoleMessageHandler.cpp b/Sofa/framework/Helper/src/sofa/helper/logging/ConsoleMessageHandler.cpp index 6aa33217994..667eff46f8c 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/ConsoleMessageHandler.cpp +++ b/Sofa/framework/Helper/src/sofa/helper/logging/ConsoleMessageHandler.cpp @@ -36,8 +36,9 @@ ConsoleMessageHandler::ConsoleMessageHandler(MessageFormatter* formatter) m_formatter = (formatter==nullptr?&DefaultStyleMessageFormatter::getInstance():formatter); } -void ConsoleMessageHandler::process(Message &m) { - m_formatter->formatMessage(m, m.type()>=Message::Error ? std::cerr : std::cout ) ; +void ConsoleMessageHandler::doProcess(Message &m) +{ + m_formatter->formatMessage(m, m.type()>Message::Info ? std::cerr : std::cout ) ; } void ConsoleMessageHandler::setMessageFormatter(MessageFormatter* formatter) diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/ConsoleMessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/ConsoleMessageHandler.h index 99cc4501897..bf2b65a2119 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/ConsoleMessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/ConsoleMessageHandler.h @@ -43,7 +43,7 @@ class SOFA_HELPER_API ConsoleMessageHandler : public MessageHandler /// Create a new ConsoleMessageHandler. By default the handler is using the /// DefaultStyleMessageFormatter object to format the message. ConsoleMessageHandler(MessageFormatter* formatter = nullptr); - void process(Message &m) override ; + void doProcess(Message &m) override ; std::string getName() const override { return "ConsoleMessageHandler"; } void setMessageFormatter( MessageFormatter* formatter ); diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/CountingMessageHandler.cpp b/Sofa/framework/Helper/src/sofa/helper/logging/CountingMessageHandler.cpp index ee1883c105a..088cd477ed0 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/CountingMessageHandler.cpp +++ b/Sofa/framework/Helper/src/sofa/helper/logging/CountingMessageHandler.cpp @@ -30,7 +30,7 @@ namespace sofa::helper::logging::countingmessagehandler { -void CountingMessageHandler::process(Message& m) +void CountingMessageHandler::doProcess(Message& m) { assert(m.type() m_countMatching ; diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/ExceptionMessageHandler.cpp b/Sofa/framework/Helper/src/sofa/helper/logging/ExceptionMessageHandler.cpp index 18774725a15..8d615240f08 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/ExceptionMessageHandler.cpp +++ b/Sofa/framework/Helper/src/sofa/helper/logging/ExceptionMessageHandler.cpp @@ -31,15 +31,14 @@ namespace sofa::helper::logging { - - - void ExceptionMessageHandler::process(Message &m) +void ExceptionMessageHandler::doProcess(Message &m) +{ + if( m.type()>=Message::Error ) { - if( m.type()>=Message::Error ) - { - ErrorMessageException errorMessageException/*(some Message's information could be added to the exception)*/; - throw errorMessageException; - } + ErrorMessageException errorMessageException/*(some Message's information could be added to the exception)*/; + throw errorMessageException; } +} + } // namespace sofa::helper::logging diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/ExceptionMessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/ExceptionMessageHandler.h index 3ebd2ca90ef..2bed1d23829 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/ExceptionMessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/ExceptionMessageHandler.h @@ -52,7 +52,7 @@ class SOFA_HELPER_API ExceptionMessageHandler : public MessageHandler - void process(Message &m) override; + void doProcess(Message &m) override; std::string getName() const override { return "ExceptionMessageHandler"; } }; } // namespace sofa::helper::logging diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/FileMessageHandler.cpp b/Sofa/framework/Helper/src/sofa/helper/logging/FileMessageHandler.cpp index b3fad6bbf02..f72c0fbba99 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/FileMessageHandler.cpp +++ b/Sofa/framework/Helper/src/sofa/helper/logging/FileMessageHandler.cpp @@ -48,7 +48,7 @@ FileMessageHandler::~FileMessageHandler() m_outFile.close(); } -void FileMessageHandler::process(Message& m) +void FileMessageHandler::doProcess(Message& m) { if (m_outFile.is_open()) { diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/FileMessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/FileMessageHandler.h index 161bd387dea..93335e27a03 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/FileMessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/FileMessageHandler.h @@ -45,7 +45,7 @@ class SOFA_HELPER_API FileMessageHandler : public MessageHandler FileMessageHandler(const char* filename,MessageFormatter* formatter = nullptr); ~FileMessageHandler() override; - void process(Message& m) override ; + void doProcess(Message& m) override ; std::string getName() const override { return "FileMessageHandler"; } bool isValid(); // is output file ok ? diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/LoggingMessageHandler.cpp b/Sofa/framework/Helper/src/sofa/helper/logging/LoggingMessageHandler.cpp index 17da6e29e45..0d29e78ef0c 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/LoggingMessageHandler.cpp +++ b/Sofa/framework/Helper/src/sofa/helper/logging/LoggingMessageHandler.cpp @@ -29,7 +29,7 @@ namespace sofa::helper::logging::loggingmessagehandler { -void LoggingMessageHandler::process(Message& m) +void LoggingMessageHandler::doProcess(Message& m) { if(m_activationCount>0){ m_messages.push_back(m) ; diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/LoggingMessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/LoggingMessageHandler.h index 4823cf34147..c6c7a68b8bd 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/LoggingMessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/LoggingMessageHandler.h @@ -77,7 +77,7 @@ class SOFA_HELPER_API LoggingMessageHandler : public MessageHandler const vector& getMessages() const ; /// Inherited from MessageHandler - void process(Message& m) override ; + void doProcess(Message& m) override ; std::string getName() const override { return "LoggingMessageHandler"; } diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/MessageHandler.cpp b/Sofa/framework/Helper/src/sofa/helper/logging/MessageHandler.cpp new file mode 100644 index 00000000000..81c5014b4f9 --- /dev/null +++ b/Sofa/framework/Helper/src/sofa/helper/logging/MessageHandler.cpp @@ -0,0 +1,38 @@ +/****************************************************************************** + * SOFA, Simulation Open-Framework Architecture * + * (c) 2006 INRIA, USTL, UJF, CNRS, MGH * + * * + * This program is free software; you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as published by * + * the Free Software Foundation; either version 2.1 of the License, or (at * + * your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, but WITHOUT * + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * + * for more details. * + * * + * You should have received a copy of the GNU Lesser General Public License * + * along with this program. If not, see . * + ******************************************************************************* + * Authors: The SOFA Team and external contributors (see Authors.txt) * + * * + * Contact information: contact@sofa-framework.org * + ******************************************************************************/ +#include +#include + + +namespace sofa::helper::logging +{ + +void MessageHandler::process(Message& m) +{ + if(not(this->isQuiet() && m.type() == Message::Info)) + { + doProcess(m); + } + // else we discard as the message is an informational message and the handler is supposed to be quiet +}; + +} // namespace sofa::helper::logging diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/MessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/MessageHandler.h index f01aeba84d2..9abef960e21 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/MessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/MessageHandler.h @@ -39,8 +39,15 @@ class SOFA_HELPER_API MessageHandler { public: virtual ~MessageHandler(){} - virtual void process(Message& m) = 0 ; + virtual void process(Message& m) final; + virtual void doProcess(Message& m) = 0; virtual std::string getName() const = 0; + + virtual void setQuiet(bool quiet) { m_quiet = quiet; }; + virtual bool isQuiet() const { return m_quiet; }; + +private: + bool m_quiet {false}; }; diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/RoutingMessageHandler.cpp b/Sofa/framework/Helper/src/sofa/helper/logging/RoutingMessageHandler.cpp index e62b906bae3..e0e84d3cfd7 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/RoutingMessageHandler.cpp +++ b/Sofa/framework/Helper/src/sofa/helper/logging/RoutingMessageHandler.cpp @@ -29,7 +29,7 @@ namespace sofa::helper::logging::routingmessagehandler { -void RoutingMessageHandler::process(Message& m) +void RoutingMessageHandler::doProcess(Message& m) { for(const auto& f : m_filters) { diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/RoutingMessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/RoutingMessageHandler.h index a6cc0ba5dd1..450e5f0fceb 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/RoutingMessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/RoutingMessageHandler.h @@ -67,7 +67,7 @@ class SOFA_HELPER_API RoutingMessageHandler : public MessageHandler void removeAllFilters() ; /// Inherited from MessageHandler - void process(Message& m) override ; + void doProcess(Message& m) override ; std::string getName() const override { return "RoutingMessageHandler"; } private: diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/SilentMessageHandler.cpp b/Sofa/framework/Helper/src/sofa/helper/logging/SilentMessageHandler.cpp index 74897a362dc..19cca0c0b42 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/SilentMessageHandler.cpp +++ b/Sofa/framework/Helper/src/sofa/helper/logging/SilentMessageHandler.cpp @@ -31,7 +31,7 @@ namespace sofa::helper::logging { -void SilentMessageHandler::process(Message& /*m*/) { +void SilentMessageHandler::doProcess(Message& /*m*/) { } diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/SilentMessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/SilentMessageHandler.h index 18fe0fb54d2..244433c2f89 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/SilentMessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/SilentMessageHandler.h @@ -39,7 +39,7 @@ class Message; class SOFA_HELPER_API SilentMessageHandler : public MessageHandler { public: - void process(Message& /*m*/) override; + void doProcess(Message& /*m*/) override; std::string getName() const override { return "SilentMessageHandler"; } }; diff --git a/Sofa/framework/Helper/test/logging/logging_test.cpp b/Sofa/framework/Helper/test/logging/logging_test.cpp index e1d02bdd0ce..67219d84125 100644 --- a/Sofa/framework/Helper/test/logging/logging_test.cpp +++ b/Sofa/framework/Helper/test/logging/logging_test.cpp @@ -69,7 +69,7 @@ class MyMessageHandler : public MessageHandler { vector m_messages ; public: - void process(Message& m) override{ + void doProcess(Message& m) override{ m_messages.push_back(m); } diff --git a/Sofa/framework/Testing/src/sofa/testing/TestMessageHandler.cpp b/Sofa/framework/Testing/src/sofa/testing/TestMessageHandler.cpp index c173c02b2be..b77abadd4fc 100644 --- a/Sofa/framework/Testing/src/sofa/testing/TestMessageHandler.cpp +++ b/Sofa/framework/Testing/src/sofa/testing/TestMessageHandler.cpp @@ -91,7 +91,7 @@ class SOFA_TESTING_API GtestMessageHandler : public MessageHandler ~ GtestMessageHandler() override; /// Inherited from MessageHandler - void process(Message& m) override ; + void doProcess(Message& m) override ; std::string getName() const override { return "GtestMessageHandler"; } void pushFrame(Message::Type type, GtestMessageFrame* frame) ; @@ -173,7 +173,7 @@ GtestMessageHandler::GtestMessageHandler(Message::Class mclass) } } -void GtestMessageHandler::process(Message& m) +void GtestMessageHandler::doProcess(Message& m) { m_gtestframes[m.type()].back()->process(m) ; } From 8ec6a1510232db14aab2b61577f631e3f81e4221 Mon Sep 17 00:00:00 2001 From: Frederick Roy Date: Wed, 26 Aug 2026 15:22:53 +0900 Subject: [PATCH 2/2] add a quiet option to runsofa and use it to silence loading mssage (not while init'ing/running) --- applications/projects/runSofa/Main.cpp | 75 ++++++++++++++++---------- 1 file changed, 47 insertions(+), 28 deletions(-) diff --git a/applications/projects/runSofa/Main.cpp b/applications/projects/runSofa/Main.cpp index a7ac3187b46..b39636424fe 100644 --- a/applications/projects/runSofa/Main.cpp +++ b/applications/projects/runSofa/Main.cpp @@ -167,8 +167,9 @@ int main(int argc, char** argv) vector plugins; vector files; + bool quiet = false; string colorsStatus = "unset"; - string messageHandler = "auto"; + string messageHandlerString = "auto"; int width = 800; int height = 600; @@ -264,6 +265,13 @@ int main(int argc, char** argv) "v,verification", "load verification data for the scene" ); + argParser->addArgument( + cxxopts::value(quiet) + ->default_value("false") + ->implicit_value("true"), + "q,quiet", + "do not print informational messages at startup" + ); argParser->addArgument( cxxopts::value(colorsStatus) ->default_value("auto") @@ -272,7 +280,7 @@ int main(int argc, char** argv) "use colors on stdout and stderr (yes, no, auto)" ); argParser->addArgument( - cxxopts::value(messageHandler) + cxxopts::value(messageHandlerString) ->default_value("auto"), "f,formatting", "select the message formatting to use (auto, clang, sofa, rich, test)" @@ -334,33 +342,39 @@ int main(int argc, char** argv) else if (colorsStatus == "no") sofa::helper::console::setStatus(sofa::helper::console::Status::Off); - //TODO(dmarchal): Use smart pointer there to avoid memory leaks !! - if (messageHandler == "auto" ) - { - MessageDispatcher::clearHandlers() ; - MessageDispatcher::addHandler( &sofa::helper::logging::MainConsoleMessageHandler::getInstance() ) ; - } - else if (messageHandler == "clang") - { - MessageDispatcher::clearHandlers() ; - MessageDispatcher::addHandler( new ClangMessageHandler() ) ; - } - else if (messageHandler == "sofa") - { - MessageDispatcher::clearHandlers() ; - MessageDispatcher::addHandler( &sofa::helper::logging::MainConsoleMessageHandler::getInstance() ) ; - } - else if (messageHandler == "rich") + sofa::helper::logging::MessageHandler* messageHandler = nullptr; + auto processMessageHandlerFromArg = [&]() { - MessageDispatcher::clearHandlers() ; - MessageDispatcher::addHandler( new ConsoleMessageHandler(&RichConsoleStyleMessageFormatter::getInstance()) ) ; - } - else if (messageHandler == "test"){ - MessageDispatcher::addHandler( new ExceptionMessageHandler() ) ; - } - else{ - msg_warning(appName) << "Invalid argument '" << messageHandler << "' for '--formatting'"; - } + if (messageHandlerString == "auto" || messageHandlerString == "sofa") + { + messageHandler = &sofa::helper::logging::MainConsoleMessageHandler::getInstance(); + } + else if (messageHandlerString == "clang") + { + messageHandler = new ClangMessageHandler(); + } + else if (messageHandlerString == "rich") + { + messageHandler = new ConsoleMessageHandler(&RichConsoleStyleMessageFormatter::getInstance()); + } + else if (messageHandlerString == "test") + { + messageHandler = new ExceptionMessageHandler(); + } + else{ + msg_warning(appName) << "Invalid argument '" << messageHandlerString << "' for '--formatting'"; + } + + if(messageHandler) + { + messageHandler->setQuiet(quiet); + MessageDispatcher::addHandler(messageHandler); + } + }; + + MessageDispatcher::clearHandlers() ; + processMessageHandlerFromArg(); + MessageDispatcher::addHandler(&MainPerComponentLoggingMessageHandler::getInstance()) ; #ifdef TRACY_ENABLE MessageDispatcher::addHandler(&sofa::helper::logging::MainTracyMessageHandler::getInstance()); @@ -486,6 +500,9 @@ int main(int argc, char** argv) sofa::helper::AdvancedTimer::begin("Init"); } + // + messageHandler->setQuiet(false); + sofa::simulation::node::initRoot(groot.get()); if( computationTimeAtBegin ) { @@ -499,6 +516,7 @@ int main(int argc, char** argv) if (startAnim) groot->setAnimate(true); + messageHandler->setQuiet(quiet); // set scene and animation root to the gui GUIManager::SetScene(groot, fileName.c_str(), temporaryFile); @@ -516,6 +534,7 @@ int main(int argc, char** argv) sofa::helper::AdvancedTimer::setOutputType("Animate", computationTimeOutputType); } + messageHandler->setQuiet(false); //======================================= // Run the main loop if (int err = GUIManager::MainLoop(groot,fileName.c_str()))