diff --git a/opm/parser/eclipse/OpmLog/OpmLog.cpp b/opm/parser/eclipse/OpmLog/OpmLog.cpp index 2f927e5ed..c34e69312 100644 --- a/opm/parser/eclipse/OpmLog/OpmLog.cpp +++ b/opm/parser/eclipse/OpmLog/OpmLog.cpp @@ -39,6 +39,18 @@ namespace Opm { } + bool OpmLog::hasBackend(const std::string& name) { + auto logger = OpmLog::getLogger(); + return logger->hasBackend( name ); + } + + + void OpmLog::addBackend(const std::string& name , std::shared_ptr backend) { + auto logger = OpmLog::getLogger(); + return logger->addBackend( name , backend ); + } + + /******************************************************************/ std::shared_ptr OpmLog::m_logger; diff --git a/opm/parser/eclipse/OpmLog/OpmLog.hpp b/opm/parser/eclipse/OpmLog/OpmLog.hpp index 853e29e39..4ea58808e 100644 --- a/opm/parser/eclipse/OpmLog/OpmLog.hpp +++ b/opm/parser/eclipse/OpmLog/OpmLog.hpp @@ -37,6 +37,16 @@ namespace Opm { class OpmLog { public: static void addMessage(int64_t messageFlag , const std::string& message); + + static bool hasBackend( const std::string& backendName ); + static void addBackend(const std::string& name , std::shared_ptr backend); + + template + static std::shared_ptr getBackend(const std::string& name) { + auto logger = OpmLog::getLogger(); + return logger->getBackend(name); + } + private: static std::shared_ptr getLogger(); static std::shared_ptr m_logger; diff --git a/opm/parser/eclipse/OpmLog/tests/OpmLogTests.cpp b/opm/parser/eclipse/OpmLog/tests/OpmLogTests.cpp index 5fc7c1097..0770a60ee 100644 --- a/opm/parser/eclipse/OpmLog/tests/OpmLogTests.cpp +++ b/opm/parser/eclipse/OpmLog/tests/OpmLogTests.cpp @@ -119,3 +119,38 @@ BOOST_AUTO_TEST_CASE(LoggerDefaultTypesEnabled) { BOOST_CHECK( logger.enabledMessageType( Log::MessageType::Warning )); BOOST_CHECK( logger.enabledMessageType( Log::MessageType::Note )); } + +/*****************************************************************/ + +void initLogger(std::ostringstream& log_stream) { + std::shared_ptr counter = std::make_shared(); + std::shared_ptr streamLog = std::make_shared( log_stream , Log::MessageType::Warning ); + + BOOST_CHECK_EQUAL( false , OpmLog::hasBackend("NO")); + + OpmLog::addBackend("COUNTER" , counter); + OpmLog::addBackend("STREAM" , streamLog); + BOOST_CHECK_EQUAL( true , OpmLog::hasBackend("COUNTER")); + BOOST_CHECK_EQUAL( true , OpmLog::hasBackend("STREAM")); +} + + + +BOOST_AUTO_TEST_CASE(TestOpmLog) { + std::ostringstream log_stream; + + initLogger(log_stream); + + OpmLog::addMessage( Log::MessageType::Warning , "Warning"); + OpmLog::addMessage( Log::MessageType::Error , "Error"); + + { + auto counter = OpmLog::getBackend("COUNTER"); + + BOOST_CHECK_EQUAL( 1 , counter->numWarnings() ); + BOOST_CHECK_EQUAL( 1 , counter->numErrors() ); + BOOST_CHECK_EQUAL( 0 , counter->numNotes() ); + } + + BOOST_CHECK_EQUAL( log_stream.str() , "Warning\n"); +}