From bbaa32396a46caa785190d1fdb6df42d9054189e Mon Sep 17 00:00:00 2001 From: Frank Winklmeier Date: Fri, 29 Sep 2017 13:26:54 +0200 Subject: [PATCH 1/6] Remove IssueSeverity support from StatusCode The IssueSeverity support in StatusCode was removed after discussion at the Gaudi workshop. Except for one place in ATLAS this was not being used and introduced unnecessary overhead (both in time and memory) to the StatusCode object. Due to the removal of the include in StatusCode, some missing includes were exposed in unreleated headers that are fixed as well. --- GaudiExamples/src/ErrorLog/ErrorLogTest.cpp | 13 +-------- GaudiExamples/tests/qmtest/refs/ErrorLog.ref | 3 +- .../tests/qmtest/refs/ErrorLog_err.ref | 2 +- GaudiGSL/GaudiMath/NumericalDerivative.h | 2 ++ GaudiKernel/GaudiKernel/AlgToolHistory.h | 1 + GaudiKernel/GaudiKernel/DataObject.h | 1 + GaudiKernel/GaudiKernel/IssueSeverity.h | 1 - GaudiKernel/GaudiKernel/StatusCode.h | 28 ++----------------- GaudiKernel/src/Lib/StatusCode.cpp | 7 ----- GaudiUtils/src/component/XMLFileCatalog.h | 2 ++ 10 files changed, 11 insertions(+), 49 deletions(-) diff --git a/GaudiExamples/src/ErrorLog/ErrorLogTest.cpp b/GaudiExamples/src/ErrorLog/ErrorLogTest.cpp index b6d8f2eb15..5622e67eff 100644 --- a/GaudiExamples/src/ErrorLog/ErrorLogTest.cpp +++ b/GaudiExamples/src/ErrorLog/ErrorLogTest.cpp @@ -19,22 +19,11 @@ StatusCode ErrorLogTest::initialize() //------------------------------------------------------------------------------ { - // if (service("THistSvc",m_ths).isFailure()) { - // error() << "Couldn't get THistSvc" << endmsg; - // return StatusCode::FAILURE; - // } - IssueSeverity err0 = ISSUE( IssueSeverity::ERROR, "ERROR level ErrObj" ); IssueSeverity war = ISSUE( IssueSeverity::WARNING, "this is a warning" ); IssueSeverity fat = ISSUE( IssueSeverity::FATAL, "this is a fatal" ); - // StatusCode sc(StatusCode::SUCCESS, ISSUE(IssueSeverity::DEBUG,"debug3 ErrObj")); - - StatusCode sc = STATUSCODE( StatusCode::SUCCESS, IssueSeverity::DEBUG, "debug" ); - - StatusCode sc2( ISSUE( IssueSeverity::INFO, "info ErrObj" ) ); - - return sc2; + return StatusCode::SUCCESS; } //------------------------------------------------------------------------------ diff --git a/GaudiExamples/tests/qmtest/refs/ErrorLog.ref b/GaudiExamples/tests/qmtest/refs/ErrorLog.ref index edd28e8680..23222ff843 100644 --- a/GaudiExamples/tests/qmtest/refs/ErrorLog.ref +++ b/GaudiExamples/tests/qmtest/refs/ErrorLog.ref @@ -43,7 +43,7 @@ IssueLogger DEBUG Writing INFO issues to MsgStream IssueLogger DEBUG Writing RECOVERABLE issues to MsgStream IssueLogger DEBUG Writing FATAL issues to MsgStream IssueLogger DEBUG Writing ALWAYS issues to MsgStream -IssueLogger FATAL FATAL ErrorLogTest.cpp:29 "this is a fatal" [17:34:53 2016/12/19 CET] +IssueLogger FATAL FATAL ErrorLogTest.cpp:24 "this is a fatal" [17:34:53 2016/12/19 CET] #1 0x7fa2c8cb6260 MinimalEventLoopMgr::initialize() [libGaudiKernel.so] #2 0x7fa2c4695980 EventLoopMgr::initialize() [libGaudiCoreSvc.so] #3 0x7fa2c8c32500 Service::sysInitialize_imp() [libGaudiKernel.so] @@ -58,7 +58,6 @@ IssueLogger DEBUG Writing ALWAYS issues to MsgStream #12 0x7fa2c8524740 __libc_start_main [libc.so.6] #13 0x400800 _start [Gaudi.exe]  -IssueLogger INFO INFO ErrorLogTest.cpp:35 "info ErrObj" [17:34:53 2016/12/19 CET] EventLoopMgr WARNING Unable to locate service "EventSelector"  EventLoopMgr WARNING No events will be processed from external input. HistogramPersis...WARNING Histograms saving not required. diff --git a/GaudiExamples/tests/qmtest/refs/ErrorLog_err.ref b/GaudiExamples/tests/qmtest/refs/ErrorLog_err.ref index 454e5f4def..cf5a60beb7 100644 --- a/GaudiExamples/tests/qmtest/refs/ErrorLog_err.ref +++ b/GaudiExamples/tests/qmtest/refs/ErrorLog_err.ref @@ -1 +1 @@ -ERROR ../src/ErrorLog/ErrorLogTest.cpp:27 "ERROR level ErrObj" [00:00:00 1970-01-01 CEST] +ERROR ../src/ErrorLog/ErrorLogTest.cpp:22 "ERROR level ErrObj" [00:00:00 1970-01-01 CEST] diff --git a/GaudiGSL/GaudiMath/NumericalDerivative.h b/GaudiGSL/GaudiMath/NumericalDerivative.h index fffa2ad069..53ea05cc21 100644 --- a/GaudiGSL/GaudiMath/NumericalDerivative.h +++ b/GaudiGSL/GaudiMath/NumericalDerivative.h @@ -12,6 +12,8 @@ #include "CLHEP/GenericFunctions/AbsFunction.hh" // ============================================================================ +#include + #if defined( __clang__ ) || defined( __CLING__ ) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Winconsistent-missing-override" diff --git a/GaudiKernel/GaudiKernel/AlgToolHistory.h b/GaudiKernel/GaudiKernel/AlgToolHistory.h index 64622ff3f5..0e23a1ea3f 100644 --- a/GaudiKernel/GaudiKernel/AlgToolHistory.h +++ b/GaudiKernel/GaudiKernel/AlgToolHistory.h @@ -9,6 +9,7 @@ class JobHistory; #include #include +#include /** @class AlgToolHistory AlgToolHistory.h * diff --git a/GaudiKernel/GaudiKernel/DataObject.h b/GaudiKernel/GaudiKernel/DataObject.h index fef340b2c8..a1d0ce36cf 100644 --- a/GaudiKernel/GaudiKernel/DataObject.h +++ b/GaudiKernel/GaudiKernel/DataObject.h @@ -8,6 +8,7 @@ // STL includes #include #include +#include // Forward declarations class IOpaqueAddress; diff --git a/GaudiKernel/GaudiKernel/IssueSeverity.h b/GaudiKernel/GaudiKernel/IssueSeverity.h index e6529a1ea6..3790b0ed2d 100644 --- a/GaudiKernel/GaudiKernel/IssueSeverity.h +++ b/GaudiKernel/GaudiKernel/IssueSeverity.h @@ -10,7 +10,6 @@ class StatusCode; #include "GaudiKernel/Kernel.h" #define ISSUE( x, y ) IssueSeverity( x, __LINE__, __FILE__, y ) -#define STATUSCODE( z, x, y ) StatusCode( z, ISSUE( x, y ) ) class IIssueLogger; diff --git a/GaudiKernel/GaudiKernel/StatusCode.h b/GaudiKernel/GaudiKernel/StatusCode.h index 4a67d50646..28e2777d6b 100644 --- a/GaudiKernel/GaudiKernel/StatusCode.h +++ b/GaudiKernel/GaudiKernel/StatusCode.h @@ -3,11 +3,8 @@ #include -#include "GaudiKernel/IssueSeverity.h" #include "GaudiKernel/Kernel.h" -#include - /** * @class StatusCode StatusCode.h GaudiKernel/StatusCode.h * @@ -33,32 +30,16 @@ public: /// Constructor. StatusCode() = default; - StatusCode( unsigned long code, IssueSeverity&& sev ) : d_code( code ) - { - try { // ensure that we do not throw even if we cannot move the severity - m_severity = std::make_shared( std::move( sev ) ); - } catch ( ... ) { - } - } - - StatusCode( IssueSeverity&& is ) - : StatusCode( is.getLevel() == IssueSeverity::RECOVERABLE - ? StatusCode::RECOVERABLE - : ( is.getLevel() < IssueSeverity::ERROR ? StatusCode::SUCCESS : StatusCode::FAILURE ), - std::move( is ) ) - { - } - StatusCode( unsigned long code, bool checked = false ) : d_code( code ), m_checked( checked ) {} - StatusCode( const StatusCode& rhs ) : d_code( rhs.d_code ), m_checked( rhs.m_checked ), m_severity( rhs.m_severity ) + StatusCode( const StatusCode& rhs ) : d_code( rhs.d_code ), m_checked( rhs.m_checked ) { rhs.m_checked = true; } /// Move constructor. StatusCode( StatusCode&& rhs ) noexcept - : d_code( rhs.d_code ), m_checked( rhs.m_checked ), m_severity( std::move( rhs.m_severity ) ) + : d_code( rhs.d_code ), m_checked( rhs.m_checked ) { rhs.m_checked = true; } @@ -111,9 +92,6 @@ public: /// Cast operator. operator unsigned long() const { return getCode(); } - /// Severity - GAUDI_API const IssueSeverity& severity() const; - /// Assignment operator. StatusCode& operator=( unsigned long value ) { @@ -126,7 +104,6 @@ public: d_code = rhs.d_code; m_checked = rhs.m_checked; rhs.m_checked = true; - m_severity = rhs.m_severity; return *this; } @@ -181,7 +158,6 @@ protected: /// The status code. unsigned long d_code = SUCCESS; ///< The status code mutable bool m_checked = false; ///< If the Status code has been checked - std::shared_ptr m_severity; ///< Pointer to a IssueSeverity static bool s_checking; ///< Global flag to control if StatusCode need to be checked diff --git a/GaudiKernel/src/Lib/StatusCode.cpp b/GaudiKernel/src/Lib/StatusCode.cpp index 073e2997cd..6017bd4221 100644 --- a/GaudiKernel/src/Lib/StatusCode.cpp +++ b/GaudiKernel/src/Lib/StatusCode.cpp @@ -5,7 +5,6 @@ #include "GaudiKernel/IMessageSvc.h" #include "GaudiKernel/IStatusCodeSvc.h" #include "GaudiKernel/ISvcLocator.h" -#include "GaudiKernel/IssueSeverity.h" #include "GaudiKernel/MsgStream.h" #include "GaudiKernel/System.h" #include @@ -22,12 +21,6 @@ void StatusCode::disableChecking() { s_checking = false; } bool StatusCode::checkingEnabled() { return s_checking; } -const IssueSeverity& StatusCode::severity() const -{ - static const IssueSeverity dummy; - return m_severity ? *m_severity : dummy; -} - void StatusCode::check() { diff --git a/GaudiUtils/src/component/XMLFileCatalog.h b/GaudiUtils/src/component/XMLFileCatalog.h index 9c1d928062..5ac2cdbdf7 100644 --- a/GaudiUtils/src/component/XMLFileCatalog.h +++ b/GaudiUtils/src/component/XMLFileCatalog.h @@ -7,6 +7,8 @@ #include "xercesc/parsers/XercesDOMParser.hpp" #include "xercesc/sax/ErrorHandler.hpp" +#include + // Forward declarations class IMessageSvc; -- GitLab From 76737195e78c6a4968c2bf7150e844c9654e876a Mon Sep 17 00:00:00 2001 From: Frank Winklmeier Date: Thu, 9 Nov 2017 10:28:10 +0100 Subject: [PATCH 2/6] Add another missing include exposed on CC7 only --- GaudiKernel/src/Lib/DataHandleHolderVisitor.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/GaudiKernel/src/Lib/DataHandleHolderVisitor.cpp b/GaudiKernel/src/Lib/DataHandleHolderVisitor.cpp index 2c8b7675e4..f44b88edb7 100644 --- a/GaudiKernel/src/Lib/DataHandleHolderVisitor.cpp +++ b/GaudiKernel/src/Lib/DataHandleHolderVisitor.cpp @@ -4,6 +4,7 @@ #include "GaudiKernel/IDataHandleHolder.h" #include #include +#include namespace { -- GitLab From a2fa45e2c40e4dcc51d457e01e78e9dcf3526e97 Mon Sep 17 00:00:00 2001 From: Frank Winklmeier Date: Thu, 9 Nov 2017 11:06:11 +0100 Subject: [PATCH 3/6] Apply code formatting patch --- GaudiKernel/GaudiKernel/AlgToolHistory.h | 2 +- GaudiKernel/GaudiKernel/DataObject.h | 2 +- GaudiKernel/GaudiKernel/StatusCode.h | 15 ++++----------- GaudiKernel/src/Lib/DataHandleHolderVisitor.cpp | 2 +- 4 files changed, 7 insertions(+), 14 deletions(-) diff --git a/GaudiKernel/GaudiKernel/AlgToolHistory.h b/GaudiKernel/GaudiKernel/AlgToolHistory.h index 0e23a1ea3f..a36a627542 100644 --- a/GaudiKernel/GaudiKernel/AlgToolHistory.h +++ b/GaudiKernel/GaudiKernel/AlgToolHistory.h @@ -7,9 +7,9 @@ class AlgTool; class JobHistory; +#include #include #include -#include /** @class AlgToolHistory AlgToolHistory.h * diff --git a/GaudiKernel/GaudiKernel/DataObject.h b/GaudiKernel/GaudiKernel/DataObject.h index a1d0ce36cf..762a2fd014 100644 --- a/GaudiKernel/GaudiKernel/DataObject.h +++ b/GaudiKernel/GaudiKernel/DataObject.h @@ -6,9 +6,9 @@ #include "GaudiKernel/StatusCode.h" // STL includes +#include #include #include -#include // Forward declarations class IOpaqueAddress; diff --git a/GaudiKernel/GaudiKernel/StatusCode.h b/GaudiKernel/GaudiKernel/StatusCode.h index 28e2777d6b..f1c8250869 100644 --- a/GaudiKernel/GaudiKernel/StatusCode.h +++ b/GaudiKernel/GaudiKernel/StatusCode.h @@ -32,17 +32,10 @@ public: StatusCode( unsigned long code, bool checked = false ) : d_code( code ), m_checked( checked ) {} - StatusCode( const StatusCode& rhs ) : d_code( rhs.d_code ), m_checked( rhs.m_checked ) - { - rhs.m_checked = true; - } + StatusCode( const StatusCode& rhs ) : d_code( rhs.d_code ), m_checked( rhs.m_checked ) { rhs.m_checked = true; } /// Move constructor. - StatusCode( StatusCode&& rhs ) noexcept - : d_code( rhs.d_code ), m_checked( rhs.m_checked ) - { - rhs.m_checked = true; - } + StatusCode( StatusCode&& rhs ) noexcept : d_code( rhs.d_code ), m_checked( rhs.m_checked ) { rhs.m_checked = true; } /// Destructor. ~StatusCode() @@ -156,8 +149,8 @@ public: protected: /// The status code. - unsigned long d_code = SUCCESS; ///< The status code - mutable bool m_checked = false; ///< If the Status code has been checked + unsigned long d_code = SUCCESS; ///< The status code + mutable bool m_checked = false; ///< If the Status code has been checked static bool s_checking; ///< Global flag to control if StatusCode need to be checked diff --git a/GaudiKernel/src/Lib/DataHandleHolderVisitor.cpp b/GaudiKernel/src/Lib/DataHandleHolderVisitor.cpp index f44b88edb7..c4a6112fa1 100644 --- a/GaudiKernel/src/Lib/DataHandleHolderVisitor.cpp +++ b/GaudiKernel/src/Lib/DataHandleHolderVisitor.cpp @@ -2,9 +2,9 @@ #include "GaudiKernel/DataHandle.h" #include "GaudiKernel/DataObjID.h" #include "GaudiKernel/IDataHandleHolder.h" +#include #include #include -#include namespace { -- GitLab From 1e5828a76d87fd9efb77d8197d00a36513a808be Mon Sep 17 00:00:00 2001 From: Frank Winklmeier Date: Fri, 10 Nov 2017 11:10:06 +0100 Subject: [PATCH 4/6] Avoid branch in assignment and add unit test Small change in the assignment operator to avoid a branch. Added a unit test that defines the current (sometimes illogical!) behaviour of StatusCode. --- GaudiKernel/CMakeLists.txt | 3 + GaudiKernel/GaudiKernel/StatusCode.h | 8 +- GaudiKernel/tests/src/test_StatusCode.cpp | 133 ++++++++++++++++++++++ 3 files changed, 141 insertions(+), 3 deletions(-) create mode 100644 GaudiKernel/tests/src/test_StatusCode.cpp diff --git a/GaudiKernel/CMakeLists.txt b/GaudiKernel/CMakeLists.txt index 01826cd661..a35860cdc6 100644 --- a/GaudiKernel/CMakeLists.txt +++ b/GaudiKernel/CMakeLists.txt @@ -148,6 +148,9 @@ gaudi_add_unit_test(test_Property tests/src/test_Property.cpp gaudi_add_unit_test(test_IssueSeverity tests/src/test_IssueSeverity.cpp LINK_LIBRARIES GaudiKernel TYPE Boost) +gaudi_add_unit_test(test_StatusCode tests/src/test_StatusCode.cpp + LINK_LIBRARIES GaudiKernel + TYPE Boost) gaudi_add_unit_test(test_SystemTypeinfoName tests/src/test_SystemTypeinfoName.cpp LINK_LIBRARIES GaudiKernel TYPE Boost) diff --git a/GaudiKernel/GaudiKernel/StatusCode.h b/GaudiKernel/GaudiKernel/StatusCode.h index f1c8250869..825c2f40ee 100644 --- a/GaudiKernel/GaudiKernel/StatusCode.h +++ b/GaudiKernel/GaudiKernel/StatusCode.h @@ -2,6 +2,7 @@ #define GAUDIKERNEL_STATUSCODE_H #include +#include #include "GaudiKernel/Kernel.h" @@ -82,6 +83,9 @@ public: void setChecked() const { m_checked = true; } void ignore() const { setChecked(); } + /// Has the StatusCode been checked? + bool checked() const { return m_checked; } + /// Cast operator. operator unsigned long() const { return getCode(); } @@ -93,10 +97,8 @@ public: } StatusCode& operator=( const StatusCode& rhs ) { - if ( this == &rhs ) return *this; // Protection against self-assignment d_code = rhs.d_code; - m_checked = rhs.m_checked; - rhs.m_checked = true; + m_checked = std::exchange(rhs.m_checked, true); return *this; } diff --git a/GaudiKernel/tests/src/test_StatusCode.cpp b/GaudiKernel/tests/src/test_StatusCode.cpp new file mode 100644 index 0000000000..c5ec907463 --- /dev/null +++ b/GaudiKernel/tests/src/test_StatusCode.cpp @@ -0,0 +1,133 @@ +#define BOOST_TEST_DYN_LINK +#define BOOST_TEST_MODULE test_StatusCode +#include + +#include "GaudiKernel/StatusCode.h" + +BOOST_AUTO_TEST_CASE( values ) +{ + // default should be SUCCESS + { + StatusCode sc; + BOOST_CHECK( sc == StatusCode::SUCCESS ); + } + + // SUCCESS + { + StatusCode sc(StatusCode::SUCCESS); + BOOST_CHECK( sc == StatusCode::SUCCESS ); + BOOST_CHECK( sc.getCode() == StatusCode::SUCCESS ); + BOOST_CHECK( sc.isSuccess() == true ); + BOOST_CHECK( sc.isFailure() == false ); + BOOST_CHECK( sc.isRecoverable() == false ); + BOOST_CHECK( static_cast(sc) == true); + } + + // FAILURE + { + StatusCode sc(StatusCode::FAILURE); + BOOST_CHECK( sc == StatusCode::FAILURE ); + BOOST_CHECK( sc.getCode() == StatusCode::FAILURE ); + BOOST_CHECK( sc.isSuccess() == false ); + BOOST_CHECK( sc.isFailure() == true ); + BOOST_CHECK( sc.isRecoverable() == false ); + BOOST_CHECK( static_cast(sc) == false); + } + + // RECOVERABLE + { + StatusCode sc(StatusCode::RECOVERABLE); + BOOST_CHECK( sc == StatusCode::RECOVERABLE ); + BOOST_CHECK( sc.getCode() == StatusCode::RECOVERABLE ); + BOOST_CHECK( sc.isSuccess() == false ); + BOOST_CHECK( sc.isFailure() == true ); // !!! note, this particularity + BOOST_CHECK( sc.isRecoverable() == true ); + BOOST_CHECK( static_cast(sc) == true); // !!! + } +} + +BOOST_AUTO_TEST_CASE( user_values ) +{ + enum Status { + ERR1 = 10, + ERR2 = 12 + }; + + { + StatusCode sc(Status::ERR1); + BOOST_CHECK( sc.isSuccess() == false ); + BOOST_CHECK( sc.isFailure() == true ); + BOOST_CHECK( sc.isRecoverable() == false ); + BOOST_CHECK( static_cast(sc) == true ); // !!! + + sc = Status::ERR2; + BOOST_CHECK( sc == Status::ERR2 ); + } +} + + +BOOST_AUTO_TEST_CASE( comparison ) +{ + // Copy and comparison + { + StatusCode sc; + StatusCode sc2(sc); + BOOST_CHECK( sc == sc2 ); + + sc2.setCode(StatusCode::FAILURE); + BOOST_CHECK( sc > sc2 ); + BOOST_CHECK( sc2 < sc ); + } +} + +BOOST_AUTO_TEST_CASE( checking ) +{ + { + StatusCode sc(StatusCode::SUCCESS); + BOOST_CHECK( sc.checked() == false ); + sc.isSuccess(); + BOOST_CHECK( sc.checked() == true); + } + { + StatusCode sc(StatusCode::SUCCESS); + sc.ignore(); + BOOST_CHECK( sc.checked() == true); + } + // Comparison invokes implicit cast --> checked + { + StatusCode sc(StatusCode::SUCCESS); + if (sc == StatusCode::SUCCESS); + BOOST_CHECK( sc.checked() == true); + } + // Using the comparison operator does not check + // This is probably unintentional and we may want to change this + { + StatusCode sc1(StatusCode::SUCCESS); + StatusCode sc2(StatusCode::FAILURE); + BOOST_CHECK( sc1 > sc2 ); + BOOST_CHECK( sc1.checked() == false); // !!! + BOOST_CHECK( sc2.checked() == false); // !!! + } + // Cast to long --> checked + { + StatusCode sc; + BOOST_CHECK( sc.checked() == false); + if (sc); + BOOST_CHECK( sc.checked() == true); + } + // Copy constructor checks source + { + StatusCode sc1(StatusCode::SUCCESS); + StatusCode sc2(sc1); + BOOST_CHECK( sc1.checked() == true); + BOOST_CHECK( sc2.checked() == false); + } + // Assignment operator checks rhs + { + StatusCode sc1(StatusCode::SUCCESS); + StatusCode sc2; + sc2 = sc1; + BOOST_CHECK( sc1.checked() == true); + BOOST_CHECK( sc2.checked() == false); + } +} -- GitLab From 1e11217fd99fd99d5dd49d0d29c979cb5a399dc8 Mon Sep 17 00:00:00 2001 From: Frank Winklmeier Date: Fri, 10 Nov 2017 13:11:07 +0100 Subject: [PATCH 5/6] Apply code formatting patch --- GaudiKernel/GaudiKernel/StatusCode.h | 4 +- GaudiKernel/tests/src/test_StatusCode.cpp | 72 +++++++++++------------ 2 files changed, 37 insertions(+), 39 deletions(-) diff --git a/GaudiKernel/GaudiKernel/StatusCode.h b/GaudiKernel/GaudiKernel/StatusCode.h index 825c2f40ee..b908e71760 100644 --- a/GaudiKernel/GaudiKernel/StatusCode.h +++ b/GaudiKernel/GaudiKernel/StatusCode.h @@ -97,8 +97,8 @@ public: } StatusCode& operator=( const StatusCode& rhs ) { - d_code = rhs.d_code; - m_checked = std::exchange(rhs.m_checked, true); + d_code = rhs.d_code; + m_checked = std::exchange( rhs.m_checked, true ); return *this; } diff --git a/GaudiKernel/tests/src/test_StatusCode.cpp b/GaudiKernel/tests/src/test_StatusCode.cpp index c5ec907463..a50d5c7fba 100644 --- a/GaudiKernel/tests/src/test_StatusCode.cpp +++ b/GaudiKernel/tests/src/test_StatusCode.cpp @@ -14,67 +14,63 @@ BOOST_AUTO_TEST_CASE( values ) // SUCCESS { - StatusCode sc(StatusCode::SUCCESS); + StatusCode sc( StatusCode::SUCCESS ); BOOST_CHECK( sc == StatusCode::SUCCESS ); BOOST_CHECK( sc.getCode() == StatusCode::SUCCESS ); BOOST_CHECK( sc.isSuccess() == true ); BOOST_CHECK( sc.isFailure() == false ); BOOST_CHECK( sc.isRecoverable() == false ); - BOOST_CHECK( static_cast(sc) == true); + BOOST_CHECK( static_cast( sc ) == true ); } // FAILURE { - StatusCode sc(StatusCode::FAILURE); + StatusCode sc( StatusCode::FAILURE ); BOOST_CHECK( sc == StatusCode::FAILURE ); BOOST_CHECK( sc.getCode() == StatusCode::FAILURE ); BOOST_CHECK( sc.isSuccess() == false ); BOOST_CHECK( sc.isFailure() == true ); BOOST_CHECK( sc.isRecoverable() == false ); - BOOST_CHECK( static_cast(sc) == false); + BOOST_CHECK( static_cast( sc ) == false ); } // RECOVERABLE { - StatusCode sc(StatusCode::RECOVERABLE); + StatusCode sc( StatusCode::RECOVERABLE ); BOOST_CHECK( sc == StatusCode::RECOVERABLE ); BOOST_CHECK( sc.getCode() == StatusCode::RECOVERABLE ); BOOST_CHECK( sc.isSuccess() == false ); - BOOST_CHECK( sc.isFailure() == true ); // !!! note, this particularity + BOOST_CHECK( sc.isFailure() == true ); // !!! note, this particularity BOOST_CHECK( sc.isRecoverable() == true ); - BOOST_CHECK( static_cast(sc) == true); // !!! + BOOST_CHECK( static_cast( sc ) == true ); // !!! } } BOOST_AUTO_TEST_CASE( user_values ) { - enum Status { - ERR1 = 10, - ERR2 = 12 - }; + enum Status { ERR1 = 10, ERR2 = 12 }; { - StatusCode sc(Status::ERR1); + StatusCode sc( Status::ERR1 ); BOOST_CHECK( sc.isSuccess() == false ); BOOST_CHECK( sc.isFailure() == true ); BOOST_CHECK( sc.isRecoverable() == false ); - BOOST_CHECK( static_cast(sc) == true ); // !!! + BOOST_CHECK( static_cast( sc ) == true ); // !!! sc = Status::ERR2; BOOST_CHECK( sc == Status::ERR2 ); } } - BOOST_AUTO_TEST_CASE( comparison ) { // Copy and comparison { StatusCode sc; - StatusCode sc2(sc); + StatusCode sc2( sc ); BOOST_CHECK( sc == sc2 ); - sc2.setCode(StatusCode::FAILURE); + sc2.setCode( StatusCode::FAILURE ); BOOST_CHECK( sc > sc2 ); BOOST_CHECK( sc2 < sc ); } @@ -83,51 +79,53 @@ BOOST_AUTO_TEST_CASE( comparison ) BOOST_AUTO_TEST_CASE( checking ) { { - StatusCode sc(StatusCode::SUCCESS); + StatusCode sc( StatusCode::SUCCESS ); BOOST_CHECK( sc.checked() == false ); sc.isSuccess(); - BOOST_CHECK( sc.checked() == true); + BOOST_CHECK( sc.checked() == true ); } { - StatusCode sc(StatusCode::SUCCESS); + StatusCode sc( StatusCode::SUCCESS ); sc.ignore(); - BOOST_CHECK( sc.checked() == true); + BOOST_CHECK( sc.checked() == true ); } // Comparison invokes implicit cast --> checked { - StatusCode sc(StatusCode::SUCCESS); - if (sc == StatusCode::SUCCESS); - BOOST_CHECK( sc.checked() == true); + StatusCode sc( StatusCode::SUCCESS ); + if ( sc == StatusCode::SUCCESS ) + ; + BOOST_CHECK( sc.checked() == true ); } // Using the comparison operator does not check // This is probably unintentional and we may want to change this { - StatusCode sc1(StatusCode::SUCCESS); - StatusCode sc2(StatusCode::FAILURE); + StatusCode sc1( StatusCode::SUCCESS ); + StatusCode sc2( StatusCode::FAILURE ); BOOST_CHECK( sc1 > sc2 ); - BOOST_CHECK( sc1.checked() == false); // !!! - BOOST_CHECK( sc2.checked() == false); // !!! + BOOST_CHECK( sc1.checked() == false ); // !!! + BOOST_CHECK( sc2.checked() == false ); // !!! } // Cast to long --> checked { StatusCode sc; - BOOST_CHECK( sc.checked() == false); - if (sc); - BOOST_CHECK( sc.checked() == true); + BOOST_CHECK( sc.checked() == false ); + if ( sc ) + ; + BOOST_CHECK( sc.checked() == true ); } // Copy constructor checks source { - StatusCode sc1(StatusCode::SUCCESS); - StatusCode sc2(sc1); - BOOST_CHECK( sc1.checked() == true); - BOOST_CHECK( sc2.checked() == false); + StatusCode sc1( StatusCode::SUCCESS ); + StatusCode sc2( sc1 ); + BOOST_CHECK( sc1.checked() == true ); + BOOST_CHECK( sc2.checked() == false ); } // Assignment operator checks rhs { - StatusCode sc1(StatusCode::SUCCESS); + StatusCode sc1( StatusCode::SUCCESS ); StatusCode sc2; sc2 = sc1; - BOOST_CHECK( sc1.checked() == true); - BOOST_CHECK( sc2.checked() == false); + BOOST_CHECK( sc1.checked() == true ); + BOOST_CHECK( sc2.checked() == false ); } } -- GitLab From b6e2beb873d84dfe38fa54d7bc0f58dc62165305 Mon Sep 17 00:00:00 2001 From: Frank Winklmeier Date: Fri, 10 Nov 2017 13:40:49 +0100 Subject: [PATCH 6/6] Remove IssueSeverity, IssueLogger, StreamLogger IssueSeverity, IssueLogger, StreamLogger don't seem to be used by anybody. Removed all associated source and test files from Gaudi. --- GaudiExamples/CMakeLists.txt | 1 - GaudiExamples/options/ErrorLog.opts | 53 ---- GaudiExamples/src/ErrorLog/ErrorLogTest.cpp | 43 ---- GaudiExamples/src/ErrorLog/ErrorLogTest.h | 22 -- .../qmtest/gaudiexamples.qms/errorlog.qmt | 21 -- GaudiExamples/tests/qmtest/refs/ErrorLog.ref | 71 ------ .../tests/qmtest/refs/ErrorLog.ref.winxp | 58 ----- .../tests/qmtest/refs/ErrorLog_err.ref | 1 - .../tests/qmtest/refs/ErrorLog_err.ref.winxp | 1 - GaudiKernel/CMakeLists.txt | 3 - GaudiKernel/GaudiKernel/IIssueLogger.h | 19 -- GaudiKernel/GaudiKernel/IssueSeverity.h | 112 --------- GaudiKernel/dict/dictionary.h | 1 - GaudiKernel/dict/dictionary.xml | 2 - GaudiKernel/src/Lib/IssueSeverity.cpp | 36 --- GaudiKernel/tests/src/test_IssueSeverity.cpp | 57 ----- GaudiMonitor/src/IssueLogger.cpp | 227 ------------------ GaudiMonitor/src/IssueLogger.h | 57 ----- GaudiMonitor/src/StreamLogger.cpp | 18 -- GaudiMonitor/src/StreamLogger.h | 31 --- GaudiSvc/doc/IssueLogger.txt | 110 --------- 21 files changed, 944 deletions(-) delete mode 100644 GaudiExamples/options/ErrorLog.opts delete mode 100644 GaudiExamples/src/ErrorLog/ErrorLogTest.cpp delete mode 100644 GaudiExamples/src/ErrorLog/ErrorLogTest.h delete mode 100644 GaudiExamples/tests/qmtest/gaudiexamples.qms/errorlog.qmt delete mode 100644 GaudiExamples/tests/qmtest/refs/ErrorLog.ref delete mode 100644 GaudiExamples/tests/qmtest/refs/ErrorLog.ref.winxp delete mode 100644 GaudiExamples/tests/qmtest/refs/ErrorLog_err.ref delete mode 100644 GaudiExamples/tests/qmtest/refs/ErrorLog_err.ref.winxp delete mode 100644 GaudiKernel/GaudiKernel/IIssueLogger.h delete mode 100644 GaudiKernel/GaudiKernel/IssueSeverity.h delete mode 100644 GaudiKernel/src/Lib/IssueSeverity.cpp delete mode 100644 GaudiKernel/tests/src/test_IssueSeverity.cpp delete mode 100644 GaudiMonitor/src/IssueLogger.cpp delete mode 100644 GaudiMonitor/src/IssueLogger.h delete mode 100644 GaudiMonitor/src/StreamLogger.cpp delete mode 100644 GaudiMonitor/src/StreamLogger.h delete mode 100644 GaudiSvc/doc/IssueLogger.txt diff --git a/GaudiExamples/CMakeLists.txt b/GaudiExamples/CMakeLists.txt index 7a462f2f8b..13e5da3725 100644 --- a/GaudiExamples/CMakeLists.txt +++ b/GaudiExamples/CMakeLists.txt @@ -47,7 +47,6 @@ set(GaudiExamples_srcs src/ColorMsg/ColorMsgAlg.cpp src/History/History.cpp src/THist/*.cpp - src/ErrorLog/ErrorLogTest.cpp src/Maps/*.cpp src/MultipleLogStreams/*.cpp src/GaudiCommonTests/*.cpp diff --git a/GaudiExamples/options/ErrorLog.opts b/GaudiExamples/options/ErrorLog.opts deleted file mode 100644 index 15a8217792..0000000000 --- a/GaudiExamples/options/ErrorLog.opts +++ /dev/null @@ -1,53 +0,0 @@ -//############################################################## -// Job options file -//============================================================== - -AuditorSvc.Auditors = { "ChronoAuditor" }; -//-------------------------------------------------------------- - - -//-------------------------------------------------------------- -// Private Application Configuration options -//-------------------------------------------------------------- -ApplicationMgr.TopAlg = { "ErrorLogTest" }; - -// Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL ) -MessageSvc.OutputLevel = 3; -MessageSvc.UseColors = true; -THistSvc.OutputLevel = 2; -ApplicationMgr.OutputLevel = 1; -ServiceManager.OutputLevel = 2; -// HistorySvc.Dump= true; -StatusCodeSvc.OutputLevel = 1; - -// ApplicationMgr.CreateSvc = {"StatusCodeSvc", "THistSvc"}; - - - - -//THistSvc.Output = {"new DATAFILE='tuple1.rt' TYP='ROOT' OPT='NEW'"}; - -IssueLogger.OutputLevel = 1; -IssueLogger.ReportLevel = "VERBOSE"; -IssueLogger.TraceBackLevel = "FATAL"; -IssueLogger.ShowTime = true; - -IssueLogger.Output = {"DEBUG='MsgSvc'"}; -IssueLogger.Output += {"WARNING='test.out'"}; -IssueLogger.Output += {"ERROR='STDERR'"}; - - -//-------------------------------------------------------------- -// Event related parameters -//-------------------------------------------------------------- -ApplicationMgr.EvtMax = 20; -ApplicationMgr.EvtSel = "NONE"; - -//-------------------------------------------------------------- -// Other Service Options -//-------------------------------------------------------------- -//ApplicationMgr.HistogramPersistency = "HBOOK"; -//ApplicationMgr.HistogramPersistency = "ROOT"; -//RootHistSvc.OutputFile = "histo.root"; -//HbookHistSvc.OutputFile = "histo.hbook"; - diff --git a/GaudiExamples/src/ErrorLog/ErrorLogTest.cpp b/GaudiExamples/src/ErrorLog/ErrorLogTest.cpp deleted file mode 100644 index 5622e67eff..0000000000 --- a/GaudiExamples/src/ErrorLog/ErrorLogTest.cpp +++ /dev/null @@ -1,43 +0,0 @@ -// Include files -#include "ErrorLogTest.h" - -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/RndmGenerators.h" - -#include "GaudiKernel/IssueSeverity.h" - -DECLARE_COMPONENT( ErrorLogTest ) - -//------------------------------------------------------------------------------ -ErrorLogTest::ErrorLogTest( const std::string& name, ISvcLocator* pSvcLocator ) : Algorithm( name, pSvcLocator ) -//------------------------------------------------------------------------------ -{ -} - -//------------------------------------------------------------------------------ -StatusCode ErrorLogTest::initialize() -//------------------------------------------------------------------------------ -{ - - IssueSeverity err0 = ISSUE( IssueSeverity::ERROR, "ERROR level ErrObj" ); - IssueSeverity war = ISSUE( IssueSeverity::WARNING, "this is a warning" ); - IssueSeverity fat = ISSUE( IssueSeverity::FATAL, "this is a fatal" ); - - return StatusCode::SUCCESS; -} - -//------------------------------------------------------------------------------ -StatusCode ErrorLogTest::execute() -//------------------------------------------------------------------------------ -{ - ISSUE( IssueSeverity::WARNING, "warning level ErrObj in execute" ); - return StatusCode::SUCCESS; -} - -//------------------------------------------------------------------------------ -StatusCode ErrorLogTest::finalize() -//------------------------------------------------------------------------------ -{ - warning() << "Finalizing..." << endmsg; - return StatusCode::SUCCESS; -} diff --git a/GaudiExamples/src/ErrorLog/ErrorLogTest.h b/GaudiExamples/src/ErrorLog/ErrorLogTest.h deleted file mode 100644 index e986eb22b2..0000000000 --- a/GaudiExamples/src/ErrorLog/ErrorLogTest.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef GAUDIEXAMPLE_ERRORLOGTEST_H -#define GAUDIEXAMPLE_ERRORLOGTEST_H 1 - -// Include files -#include "GaudiKernel/Algorithm.h" - -class ErrorLogTest : public Algorithm -{ - -public: - // Constructor of this form must be provided - ErrorLogTest( const std::string& name, ISvcLocator* pSvcLocator ); - - // Three mandatory member functions of any algorithm - StatusCode initialize() override; - StatusCode execute() override; - StatusCode finalize() override; - -private: -}; - -#endif // diff --git a/GaudiExamples/tests/qmtest/gaudiexamples.qms/errorlog.qmt b/GaudiExamples/tests/qmtest/gaudiexamples.qms/errorlog.qmt deleted file mode 100644 index 6b13992c04..0000000000 --- a/GaudiExamples/tests/qmtest/gaudiexamples.qms/errorlog.qmt +++ /dev/null @@ -1,21 +0,0 @@ - - -$GAUDIEXAMPLESROOT/options/ErrorLog.opts - true - refs/ErrorLog.ref - refs/ErrorLog_err.ref - -# Normalize the filename in the output of the test -preproc = (normalizeExamples + - LineSkipper(["0 local"], - regexps=[r"0x[0-9a-fA-F#]+ *(Algorithm::sysI|ErrorLogTest::i)nitialize\(\) *\[", - r"0x[0-9a-fA-F#]+ *void std::(call_once|__once_call_impl)<", - r"0x[0-9a-fA-F#]* *(__gxx_personality_v0|pthread_once|_start|main) *\["]) + - RegexpReplacer(r"(?<=\s)\S+ErrorLogTest\.cpp:", "ErrorLogTest.cpp:", "ErrorLogTest.cpp:") + - RegexpReplacer(r"\[.*/([^/]*.*)\]", r"[\1]", r"^#[0-9]+ +0x########") + # normalize paths to libraries - RegexpReplacer(r"^#[0-9]+ +", r"#N ", "^#[0-9]+ +0x########") # normalize stack levels count - ) - -validateWithReference(preproc = preproc) - - diff --git a/GaudiExamples/tests/qmtest/refs/ErrorLog.ref b/GaudiExamples/tests/qmtest/refs/ErrorLog.ref deleted file mode 100644 index 23222ff843..0000000000 --- a/GaudiExamples/tests/qmtest/refs/ErrorLog.ref +++ /dev/null @@ -1,71 +0,0 @@ -JobOptionsSvc INFO # =======> Gaudi/GaudiExamples/options/ErrorLog.opts -JobOptionsSvc INFO # (5,1): AuditorSvc.Auditors = ["ChronoAuditor"] -JobOptionsSvc INFO # (12,1): ApplicationMgr.TopAlg = ["ErrorLogTest"] -JobOptionsSvc INFO # (15,1): MessageSvc.OutputLevel = 3 -JobOptionsSvc INFO # (16,1): MessageSvc.UseColors = 1 -JobOptionsSvc INFO # (17,1): THistSvc.OutputLevel = 2 -JobOptionsSvc INFO # (18,1): ApplicationMgr.OutputLevel = 1 -JobOptionsSvc INFO # (19,1): ServiceManager.OutputLevel = 2 -JobOptionsSvc INFO # (21,1): StatusCodeSvc.OutputLevel = 1 -JobOptionsSvc INFO # (30,1): IssueLogger.OutputLevel = 1 -JobOptionsSvc INFO # (31,1): IssueLogger.ReportLevel = "VERBOSE" -JobOptionsSvc INFO # (32,1): IssueLogger.TraceBackLevel = "FATAL" -JobOptionsSvc INFO # (33,1): IssueLogger.ShowTime = 1 -JobOptionsSvc INFO # (35,1): IssueLogger.Output = ["DEBUG='MsgSvc'"] -JobOptionsSvc INFO # (36,1): IssueLogger.Output += ["WARNING='test.out'"] -JobOptionsSvc INFO # (37,1): IssueLogger.Output += ["ERROR='STDERR'"] -JobOptionsSvc INFO # (43,1): ApplicationMgr.EvtMax = 20 -JobOptionsSvc INFO # (44,1): ApplicationMgr.EvtSel = "NONE" -JobOptionsSvc INFO Job options successfully read in from Gaudi/GaudiExamples/options/ErrorLog.opts -ApplicationMgr SUCCESS -==================================================================================================================================== - Welcome to ApplicationMgr (GaudiCoreSvc v28r1) - running on pclhcb117 on Mon Dec 19 17:34:53 2016 -==================================================================================================================================== -ApplicationMgr VERBOSE declareMultiSvcType: declared service EvtDataSvc/EventDataSvc -ApplicationMgr VERBOSE declareMultiSvcType: declared service DetDataSvc/DetectorDataSvc -ApplicationMgr VERBOSE declareMultiSvcType: declared service HistogramSvc/HistogramDataSvc -ApplicationMgr VERBOSE declareMultiSvcType: declared service HbookCnv::PersSvc/HbookHistSvc -ApplicationMgr VERBOSE declareMultiSvcType: declared service RootHistCnv::PersSvc/RootHistSvc -ApplicationMgr VERBOSE declareMultiSvcType: declared service EvtPersistencySvc/EventPersistencySvc -ApplicationMgr VERBOSE declareMultiSvcType: declared service DetPersistencySvc/DetectorPersistencySvc -ApplicationMgr VERBOSE declareMultiSvcType: declared service HistogramPersistencySvc/HistogramPersistencySvc -ApplicationMgr DEBUG Loading declared DLL's -ApplicationMgr VERBOSE addMultiSvc: added service EventLoopMgr/EventLoopMgr -ApplicationMgr INFO Application Manager Configured successfully -IssueLogger DEBUG Property update for OutputLevel : new value = 1 -IssueLogger DEBUG Service base class initialized successfully -IssueLogger DEBUG Writing VERBOSE issues to MsgStream -IssueLogger DEBUG Writing DEBUG1 issues to MsgStream -IssueLogger DEBUG Writing DEBUG2 issues to MsgStream -IssueLogger DEBUG Writing DEBUG3 issues to MsgStream -IssueLogger DEBUG Writing INFO issues to MsgStream -IssueLogger DEBUG Writing RECOVERABLE issues to MsgStream -IssueLogger DEBUG Writing FATAL issues to MsgStream -IssueLogger DEBUG Writing ALWAYS issues to MsgStream -IssueLogger FATAL FATAL ErrorLogTest.cpp:24 "this is a fatal" [17:34:53 2016/12/19 CET] -#1 0x7fa2c8cb6260 MinimalEventLoopMgr::initialize() [libGaudiKernel.so] -#2 0x7fa2c4695980 EventLoopMgr::initialize() [libGaudiCoreSvc.so] -#3 0x7fa2c8c32500 Service::sysInitialize_imp() [libGaudiKernel.so] -#4 0 local [/lib/x86_64-linux-gnu/libpthread.so.0] -#5 0x7fa2c8c2f910 Service::sysInitialize() [libGaudiKernel.so] -#6 0x7fa2c469e100 ServiceManager::initialize() [libGaudiCoreSvc.so] -#7 0x7fa2c465f290 ApplicationMgr::initialize() [libGaudiCoreSvc.so] -#8 0x7fa2c465b790 ApplicationMgr::GoToState(Gaudi::StateMachine::State, bool) [libGaudiCoreSvc.so] -#9 0x7fa2c465b790 ApplicationMgr::GoToState(Gaudi::StateMachine::State, bool) [libGaudiCoreSvc.so] -#10 0x7fa2c465c970 ApplicationMgr::run() [libGaudiCoreSvc.so] -#11 0x7fa2c8b5e8f0 GaudiMain [libGaudiKernel.so] -#12 0x7fa2c8524740 __libc_start_main [libc.so.6] -#13 0x400800 _start [Gaudi.exe] - -EventLoopMgr WARNING Unable to locate service "EventSelector"  -EventLoopMgr WARNING No events will be processed from external input. -HistogramPersis...WARNING Histograms saving not required. -ApplicationMgr INFO Application Manager Initialized successfully -ApplicationMgr INFO Application Manager Started successfully -ApplicationMgr INFO Application Manager Stopped successfully -ErrorLogTest WARNING Finalizing... -EventLoopMgr INFO Histograms converted successfully according to request. -IssueLogger DEBUG IssueLogger::finalize -ApplicationMgr INFO Application Manager Finalized successfully -ApplicationMgr INFO Application Manager Terminated successfully diff --git a/GaudiExamples/tests/qmtest/refs/ErrorLog.ref.winxp b/GaudiExamples/tests/qmtest/refs/ErrorLog.ref.winxp deleted file mode 100644 index 151e70e0ab..0000000000 --- a/GaudiExamples/tests/qmtest/refs/ErrorLog.ref.winxp +++ /dev/null @@ -1,58 +0,0 @@ -JobOptionsSvc INFO # =======> D:/Profiles/clemenci/cmtuser/Gaudi/GaudiExamples/options/ErrorLog.opts) -JobOptionsSvc INFO # (5,1): AuditorSvc.Auditors = ["ChronoAuditor"] -JobOptionsSvc INFO # (12,1): ApplicationMgr.TopAlg = ["ErrorLogTest"] -JobOptionsSvc INFO # (15,1): MessageSvc.OutputLevel = 3 -JobOptionsSvc INFO # (16,1): MessageSvc.UseColors = 1 -JobOptionsSvc INFO # (17,1): THistSvc.OutputLevel = 2 -JobOptionsSvc INFO # (18,1): ApplicationMgr.OutputLevel = 1 -JobOptionsSvc INFO # (19,1): ServiceManager.OutputLevel = 2 -JobOptionsSvc INFO # (21,1): StatusCodeSvc.OutputLevel = 1 -JobOptionsSvc INFO # (30,1): IssueLogger.OutputLevel = 1 -JobOptionsSvc INFO # (31,1): IssueLogger.ReportLevel = "VERBOSE" -JobOptionsSvc INFO # (32,1): IssueLogger.TraceBackLevel = "FATAL" -JobOptionsSvc INFO # (33,1): IssueLogger.ShowTime = 1 -JobOptionsSvc INFO # (35,1): IssueLogger.Output = ["DEBUG='MsgSvc'"] -JobOptionsSvc INFO # (36,1): IssueLogger.Output += ["WARNING='test.out'"] -JobOptionsSvc INFO # (37,1): IssueLogger.Output += ["ERROR='STDERR'"] -JobOptionsSvc INFO # (43,1): ApplicationMgr.EvtMax = 20 -JobOptionsSvc INFO # (44,1): ApplicationMgr.EvtSel = "NONE" -JobOptionsSvc INFO Job options successfully read in from D:\Profiles\clemenci\cmtuser\Gaudi\GaudiExamples\options\ErrorLog.opts -ApplicationMgr SUCCESS -==================================================================================================================================== - Welcome to ApplicationMgr $Revision: 1.77 $ - running on CERNTSLHCB05 on 08/16/11 13:57:26 -==================================================================================================================================== -ApplicationMgr VERBOSE declareMultiSvcType: declared service EvtDataSvc/EventDataSvc -ApplicationMgr VERBOSE declareMultiSvcType: declared service DetDataSvc/DetectorDataSvc -ApplicationMgr VERBOSE declareMultiSvcType: declared service HistogramSvc/HistogramDataSvc -ApplicationMgr VERBOSE declareMultiSvcType: declared service HbookCnv::PersSvc/HbookHistSvc -ApplicationMgr VERBOSE declareMultiSvcType: declared service RootHistCnv::PersSvc/RootHistSvc -ApplicationMgr VERBOSE declareMultiSvcType: declared service EvtPersistencySvc/EventPersistencySvc -ApplicationMgr VERBOSE declareMultiSvcType: declared service DetPersistencySvc/DetectorPersistencySvc -ApplicationMgr VERBOSE declareMultiSvcType: declared service HistogramPersistencySvc/HistogramPersistencySvc -ApplicationMgr DEBUG Loading declared DLL's -ApplicationMgr VERBOSE addMultiSvc: added service EventLoopMgr/EventLoopMgr -ApplicationMgr INFO Application Manager Configured successfully -IssueLogger DEBUG Service base class initialized successfully -IssueLogger DEBUG Writing VERBOSE issues to MsgStream -IssueLogger DEBUG Writing DEBUG1 issues to MsgStream -IssueLogger DEBUG Writing DEBUG2 issues to MsgStream -IssueLogger DEBUG Writing DEBUG3 issues to MsgStream -IssueLogger DEBUG Writing INFO issues to MsgStream -IssueLogger DEBUG Writing RECOVERABLE issues to MsgStream -IssueLogger DEBUG Writing FATAL issues to MsgStream -IssueLogger DEBUG Writing ALWAYS issues to MsgStream -IssueLogger FATAL FATAL ..\src\ErrorLog\ErrorLogTest.cpp:38 "this is a fatal" [13:57:26 2011/08/16 W. Europe Daylight Time] - -IssueLogger INFO INFO ..\src\ErrorLog\ErrorLogTest.cpp:44 "info ErrObj" [13:57:26 2011/08/16 W. Europe Daylight Time] -EventLoopMgr WARNING Unable to locate service "EventSelector" -EventLoopMgr WARNING No events will be processed from external input. -HistogramPersis...WARNING Histograms saving not required. -ApplicationMgr INFO Application Manager Initialized successfully -ApplicationMgr INFO Application Manager Started successfully -ApplicationMgr INFO Application Manager Stopped successfully -ErrorLogTest WARNING Finalizing... -EventLoopMgr INFO Histograms converted successfully according to request. -IssueLogger DEBUG IssueLogger::finalize -ApplicationMgr INFO Application Manager Finalized successfully -ApplicationMgr INFO Application Manager Terminated successfully diff --git a/GaudiExamples/tests/qmtest/refs/ErrorLog_err.ref b/GaudiExamples/tests/qmtest/refs/ErrorLog_err.ref deleted file mode 100644 index cf5a60beb7..0000000000 --- a/GaudiExamples/tests/qmtest/refs/ErrorLog_err.ref +++ /dev/null @@ -1 +0,0 @@ -ERROR ../src/ErrorLog/ErrorLogTest.cpp:22 "ERROR level ErrObj" [00:00:00 1970-01-01 CEST] diff --git a/GaudiExamples/tests/qmtest/refs/ErrorLog_err.ref.winxp b/GaudiExamples/tests/qmtest/refs/ErrorLog_err.ref.winxp deleted file mode 100644 index 553670e0a4..0000000000 --- a/GaudiExamples/tests/qmtest/refs/ErrorLog_err.ref.winxp +++ /dev/null @@ -1 +0,0 @@ -ERROR ..\src\ErrorLog\ErrorLogTest.cpp:36 "ERROR level ErrObj" [14:38:30 2011/08/16 W. Europe Daylight Time] diff --git a/GaudiKernel/CMakeLists.txt b/GaudiKernel/CMakeLists.txt index a35860cdc6..4e523d40d1 100644 --- a/GaudiKernel/CMakeLists.txt +++ b/GaudiKernel/CMakeLists.txt @@ -145,9 +145,6 @@ gaudi_add_unit_test(test_PropertyHolder tests/src/test_PropertyHolder.cpp gaudi_add_unit_test(test_Property tests/src/test_Property.cpp LINK_LIBRARIES GaudiKernel TYPE Boost) -gaudi_add_unit_test(test_IssueSeverity tests/src/test_IssueSeverity.cpp - LINK_LIBRARIES GaudiKernel - TYPE Boost) gaudi_add_unit_test(test_StatusCode tests/src/test_StatusCode.cpp LINK_LIBRARIES GaudiKernel TYPE Boost) diff --git a/GaudiKernel/GaudiKernel/IIssueLogger.h b/GaudiKernel/GaudiKernel/IIssueLogger.h deleted file mode 100644 index ec0875eb31..0000000000 --- a/GaudiKernel/GaudiKernel/IIssueLogger.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef GAUDIKERNEL_IISSUELOGGER_H -#define GAUDIKERNEL_IISSUELOGGER_H - -#include "GaudiKernel/IService.h" -#include "GaudiKernel/IssueSeverity.h" -#include - -class GAUDI_API IIssueLogger : virtual public IService -{ - -public: - /// InterfaceID - DeclareInterfaceID( IIssueLogger, 2, 0 ); - - virtual void report( IssueSeverity::Level level, const std::string& msg, const std::string& origin ) = 0; - virtual void report( const IssueSeverity& err ) = 0; -}; - -#endif diff --git a/GaudiKernel/GaudiKernel/IssueSeverity.h b/GaudiKernel/GaudiKernel/IssueSeverity.h deleted file mode 100644 index 3790b0ed2d..0000000000 --- a/GaudiKernel/GaudiKernel/IssueSeverity.h +++ /dev/null @@ -1,112 +0,0 @@ -#ifndef GAUDIKERNEL_ISSUESEVERITY_H -#define GAUDIKERNEL_ISSUESEVERITY_H 1 - -class StatusCode; - -#include -#include -#include - -#include "GaudiKernel/Kernel.h" - -#define ISSUE( x, y ) IssueSeverity( x, __LINE__, __FILE__, y ) - -class IIssueLogger; - -#ifdef _WIN32 -#ifdef ERROR -#undef ERROR -#endif -#endif - -class GAUDI_API IssueSeverity final -{ - -public: - enum Level { - NIL = 0, - VERBOSE, - DEBUG, - DEBUG1, - DEBUG2, - DEBUG3, - INFO, - WARNING, - RECOVERABLE, - ERROR, - FATAL, - ALWAYS, - NUM_LEVELS - }; - - IssueSeverity() {} - IssueSeverity( IssueSeverity::Level level, int line, std::string file, std::string msg = "" ); - IssueSeverity( IssueSeverity::Level level, std::string msg = "" ); - - IssueSeverity( const IssueSeverity& ) = delete; - IssueSeverity& operator=( const IssueSeverity& ) = delete; - IssueSeverity( IssueSeverity&& ) noexcept; - IssueSeverity& operator=( IssueSeverity&& ) noexcept; - - ~IssueSeverity(); - - void setLevel( const IssueSeverity::Level& l ) { m_level = l; } - void setMsg( std::string m ) { m_msg = std::move( m ); } - - IssueSeverity::Level getLevel() const { return m_level; } - std::string getMsg() const { return m_msg; } - std::string getOrigin() const; - - void report(); - - friend inline std::ostream& operator<<( std::ostream&, const IssueSeverity& ); - -private: - std::string m_file; - std::string m_msg; - - int m_line = 0; - IssueSeverity::Level m_level = IssueSeverity::NIL; - bool m_reported = true; - - static bool m_init; - static IIssueLogger* m_ers; -}; - -inline IssueSeverity::IssueSeverity( IssueSeverity::Level level, int line, std::string file, std::string msg ) - : m_file( std::move( file ) ), m_msg( std::move( msg ) ), m_line( line ), m_level( level ), m_reported( false ) -{ - report(); -} - -inline IssueSeverity::IssueSeverity( IssueSeverity::Level level, std::string msg ) - : IssueSeverity( std::move( level ), 0, "??", std::move( msg ) ) -{ -} - -inline IssueSeverity::IssueSeverity( IssueSeverity&& rhs ) noexcept -{ - m_file = std::move( rhs.m_file ); - m_msg = std::move( rhs.m_msg ); - m_line = rhs.m_line; - m_level = rhs.m_level; - m_reported = std::exchange( rhs.m_reported, true ); -} - -inline IssueSeverity& IssueSeverity::operator=( IssueSeverity&& rhs ) noexcept -{ - m_file = std::move( rhs.m_file ); - m_msg = std::move( rhs.m_msg ); - m_line = rhs.m_line; - m_level = rhs.m_level; - m_reported = std::exchange( rhs.m_reported, true ); - return *this; -} - -std::ostream& operator<<( std::ostream& os, const IssueSeverity& rhs ) -{ - os << "ISSUE: level " << rhs.getLevel() << " from: " << rhs.getOrigin() << " msg: " << rhs.getMsg(); - return os; -} - -#endif diff --git a/GaudiKernel/dict/dictionary.h b/GaudiKernel/dict/dictionary.h index 2bd3a4fc3e..fe1d54ec60 100644 --- a/GaudiKernel/dict/dictionary.h +++ b/GaudiKernel/dict/dictionary.h @@ -64,7 +64,6 @@ #include "GaudiKernel/IInspectable.h" #include "GaudiKernel/IInspector.h" #include "GaudiKernel/IInterface.h" -#include "GaudiKernel/IIssueLogger.h" #include "GaudiKernel/IJobOptionsSvc.h" #include "GaudiKernel/IMagneticFieldSvc.h" #include "GaudiKernel/IMessageSvc.h" diff --git a/GaudiKernel/dict/dictionary.xml b/GaudiKernel/dict/dictionary.xml index 08cfb0f6c0..35fbd69fdf 100644 --- a/GaudiKernel/dict/dictionary.xml +++ b/GaudiKernel/dict/dictionary.xml @@ -4,7 +4,6 @@ - @@ -72,7 +71,6 @@ - diff --git a/GaudiKernel/src/Lib/IssueSeverity.cpp b/GaudiKernel/src/Lib/IssueSeverity.cpp deleted file mode 100644 index 34d3d0896d..0000000000 --- a/GaudiKernel/src/Lib/IssueSeverity.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#define GAUDIKERNEL_ISSUESEVERITY_CPP 1 - -#include "GaudiKernel/IssueSeverity.h" -#include "GaudiKernel/Bootstrap.h" -#include "GaudiKernel/IIssueLogger.h" -#include "GaudiKernel/ISvcLocator.h" -#include "GaudiKernel/StatusCode.h" -#include "GaudiKernel/System.h" - -#include - -bool IssueSeverity::m_init( false ); -IIssueLogger* IssueSeverity::m_ers( nullptr ); - -IssueSeverity::~IssueSeverity() -{ - if ( !m_reported ) { - report(); - } -} - -void IssueSeverity::report() -{ - if ( !m_init ) { - m_init = true; - m_ers = Gaudi::svcLocator()->service( "IssueLogger" ).get(); - } - if ( m_ers ) { - m_ers->report( *this ); - } else { - std::cerr << *this << std::endl; - } - m_reported = true; -} - -std::string IssueSeverity::getOrigin() const { return m_file + ":" + std::to_string( m_line ); } diff --git a/GaudiKernel/tests/src/test_IssueSeverity.cpp b/GaudiKernel/tests/src/test_IssueSeverity.cpp deleted file mode 100644 index f6e3494aa2..0000000000 --- a/GaudiKernel/tests/src/test_IssueSeverity.cpp +++ /dev/null @@ -1,57 +0,0 @@ -#define BOOST_TEST_DYN_LINK -#define BOOST_TEST_MODULE test_IssueSeverity -#include - -#include -#include - -#include "GaudiKernel/IssueSeverity.h" - -// Use function return value to generate rvalue references -IssueSeverity returnIssue() -{ - return IssueSeverity{IssueSeverity::Level::INFO, 666, "ghost.cpp", "issue severity test"}; -} - -BOOST_AUTO_TEST_CASE( constructor ) -{ - { - std::cout << "constructor full" << std::endl; - IssueSeverity is{IssueSeverity::Level::INFO, 666, "ghost.cpp", "issue severity test"}; - BOOST_CHECK( is.getLevel() == IssueSeverity::Level::INFO ); - BOOST_CHECK( is.getOrigin() == std::string( "ghost.cpp:666" ) ); - BOOST_CHECK( is.getMsg() == "issue severity test" ); - } - { - std::cout << "constructor partial" << std::endl; - IssueSeverity is{IssueSeverity::Level::INFO, "issue severity test"}; - BOOST_CHECK( is.getLevel() == IssueSeverity::Level::INFO ); - BOOST_CHECK( is.getMsg() == "issue severity test" ); - } - { - std::cout << "constructor move assign" << std::endl; - IssueSeverity is = returnIssue(); - BOOST_CHECK( is.getLevel() == IssueSeverity::Level::INFO ); - BOOST_CHECK( is.getOrigin() == std::string( "ghost.cpp:666" ) ); - BOOST_CHECK( is.getMsg() == "issue severity test" ); - } - { - std::cout << "constructor from rval ref" << std::endl; - IssueSeverity is( returnIssue() ); - BOOST_CHECK( is.getLevel() == IssueSeverity::Level::INFO ); - BOOST_CHECK( is.getOrigin() == std::string( "ghost.cpp:666" ) ); - BOOST_CHECK( is.getMsg() == "issue severity test" ); - } -} - -BOOST_AUTO_TEST_CASE( setter ) -{ - { - std::cout << "setters" << std::endl; - IssueSeverity is{IssueSeverity::Level::INFO, 666, "ghost.cpp", "issue severity test"}; - is.setLevel( IssueSeverity::Level::ERROR ); - BOOST_CHECK( is.getLevel() == IssueSeverity::Level::ERROR ); - is.setMsg( "updated message" ); - BOOST_CHECK( is.getMsg() == "updated message" ); - } -} diff --git a/GaudiMonitor/src/IssueLogger.cpp b/GaudiMonitor/src/IssueLogger.cpp deleted file mode 100644 index aeed7b9071..0000000000 --- a/GaudiMonitor/src/IssueLogger.cpp +++ /dev/null @@ -1,227 +0,0 @@ -#include "IssueLogger.h" - -#include "GaudiKernel/AttribStringParser.h" -#include "GaudiKernel/ISvcLocator.h" -#include "GaudiKernel/MsgStream.h" -#include "GaudiKernel/System.h" -#include "GaudiKernel/Time.h" - -#include -namespace -{ - - std::string getTraceBack() - { - std::string stack; - constexpr int depth = 30; - constexpr int offset = 5; - System::backTrace( stack, depth, offset ); - return stack; - } - - static const std::map s_sevMsgMap = { - {IssueSeverity::NIL, MSG::NIL}, {IssueSeverity::VERBOSE, MSG::VERBOSE}, - {IssueSeverity::DEBUG, MSG::DEBUG}, {IssueSeverity::DEBUG1, MSG::DEBUG}, - {IssueSeverity::DEBUG2, MSG::DEBUG}, {IssueSeverity::DEBUG3, MSG::DEBUG}, - {IssueSeverity::INFO, MSG::INFO}, {IssueSeverity::WARNING, MSG::WARNING}, - {IssueSeverity::RECOVERABLE, MSG::ERROR}, {IssueSeverity::ERROR, MSG::ERROR}, - {IssueSeverity::FATAL, MSG::FATAL}, {IssueSeverity::ALWAYS, MSG::ALWAYS}}; - - static const std::map s_levelTrans = { - {IssueSeverity::VERBOSE, "VERBOSE"}, {IssueSeverity::DEBUG, "DEBUG"}, - {IssueSeverity::DEBUG1, "DEBUG1"}, {IssueSeverity::DEBUG2, "DEBUG2"}, - {IssueSeverity::DEBUG3, "DEBUG3"}, {IssueSeverity::INFO, "INFO"}, - {IssueSeverity::WARNING, "WARNING"}, {IssueSeverity::RECOVERABLE, "RECOVERABLE"}, - {IssueSeverity::ERROR, "ERROR"}, {IssueSeverity::FATAL, "FATAL"}, - {IssueSeverity::ALWAYS, "ALWAYS"}}; - - static const std::map s_levelSTrans = { - {"VERBOSE", IssueSeverity::VERBOSE}, {"DEBUG", IssueSeverity::DEBUG}, - {"DEBUG1", IssueSeverity::DEBUG1}, {"DEBUG2", IssueSeverity::DEBUG2}, - {"DEBUG3", IssueSeverity::DEBUG3}, {"INFO", IssueSeverity::INFO}, - {"WARNING", IssueSeverity::WARNING}, {"RECOVERABLE", IssueSeverity::RECOVERABLE}, - {"ERROR", IssueSeverity::ERROR}, {"FATAL", IssueSeverity::FATAL}, - {"ALWAYS", IssueSeverity::ALWAYS}}; -} - -DECLARE_COMPONENT( IssueLogger ) - -//*************************************************************************// -inline void toupper( std::string& s ) { std::transform( s.begin(), s.end(), s.begin(), (int ( * )( int ))toupper ); } - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *// - -IssueLogger::IssueLogger( const std::string& name, ISvcLocator* svc ) : base_class( name, svc ) -{ - - m_reportLevelS.declareUpdateHandler( &IssueLogger::setupLevels, this ); - m_traceLevelS.declareUpdateHandler( &IssueLogger::setupLevels, this ); - m_outputfile.declareUpdateHandler( &IssueLogger::setupStreams, this ); - - m_reportLevel = IssueSeverity::WARNING; - m_traceLevel = IssueSeverity::ERROR; -} - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *// - -StatusCode IssueLogger::initialize() -{ - - StatusCode st = Service::initialize(); - if ( st.isSuccess() ) { - setupDefaultLogger(); - } - return st; -} - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *// - -StatusCode IssueLogger::reinitialize() -{ - - warning() << "reinitialize not implemented" << endmsg; - return StatusCode::SUCCESS; -} - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *// - -StatusCode IssueLogger::finalize() -{ - - debug() << "IssueLogger::finalize" << endmsg; - std::for_each( std::begin( m_log ), std::end( m_log ), []( logger_t& i ) { i.reset(); } ); - return Service::finalize(); -} - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *// - -StatusCode IssueLogger::connect( const std::string& ident ) -{ - - auto loc = ident.find( " " ); - using Parser = Gaudi::Utils::AttribStringParser; - // note: if loc == string::npos then loc + 1 == 0 - for ( auto attrib : Parser( ident.substr( loc + 1 ) ) ) { - toupper( attrib.tag ); - IssueSeverity::Level level; - if ( attrib.tag == "DEBUG" ) { - level = IssueSeverity::DEBUG; - } else if ( attrib.tag == "INFO" ) { - level = IssueSeverity::INFO; - } else if ( attrib.tag == "WARNING" ) { - level = IssueSeverity::WARNING; - } else if ( attrib.tag == "RECOVERABLE" ) { - level = IssueSeverity::RECOVERABLE; - } else if ( attrib.tag == "ERROR" ) { - level = IssueSeverity::ERROR; - } else if ( attrib.tag == "FATAL" ) { - level = IssueSeverity::FATAL; - } else { - error() << "Unknown output level \"" << attrib.tag << "\"" << endmsg; - continue; - } - - if ( m_log[level] ) { - info() << "closing stream " << m_log[level].name() << endmsg; - m_log[level].reset(); - } - - if ( attrib.value == "MsgSvc" ) { - m_log[level] = {new StreamLogger( msgSvc(), s_sevMsgMap.at( level ) ), &StreamLogger::WriteToMsgSvc}; - } else if ( attrib.value == "STDERR" ) { - m_log[level] = {new StreamLogger( std::cerr ), &StreamLogger::WriteToStream}; - } else if ( attrib.value == "STDOUT" ) { - m_log[level] = {new StreamLogger( std::cout ), &StreamLogger::WriteToStream}; - } else { // A file - try { - m_log[level] = {new StreamLogger( attrib.value ), &StreamLogger::WriteToStream}; - } catch ( std::exception& ) { - m_log[level].reset(); - error() << "Unable to open file \"" << attrib.value << "\" for writing issues at level " << attrib.tag - << endmsg; - return StatusCode::FAILURE; - } - } - debug() << "Writing " << s_levelTrans.at( level ) << " issues to " << m_log[level].name() << endmsg; - } - return StatusCode::SUCCESS; -} - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *// - -void IssueLogger::report( IssueSeverity::Level lev, const std::string& str, const std::string& org ) -{ - if ( lev < m_reportLevel ) return; - std::string msg = s_levelTrans.at( lev ) + " " + org + " \"" + str + "\""; - if ( m_showTime ) msg += " [" + Gaudi::Time::current().format( true, "%H:%M:%S %Y/%m/%d %Z" ) + "]"; - if ( lev >= m_traceLevel ) msg += "\n" + getTraceBack(); - m_log[lev]( msg ); -} - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *// - -void IssueLogger::report( const IssueSeverity& err ) { report( err.getLevel(), err.getMsg(), err.getOrigin() ); } - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *// - -void IssueLogger::setupLevels( Gaudi::Details::PropertyBase& prop ) -{ - - Gaudi::Property* sap = dynamic_cast*>( &prop ); - if ( !sap ) { - error() << "Could not convert " << prop.name() << "to a Gaudi::Property (which it should be!)" - << endmsg; - return; - } - - const std::string& val = sap->value(); - auto set = [&]( IssueSeverity::Level& key, IssueSeverity::Level def ) { - if ( s_levelSTrans.find( val ) == s_levelSTrans.end() ) { - key = def; - error() << "Option " << prop.name() << ": unknown Issue Severity level \"" << val << "\". Setting it " - << s_levelTrans.at( def ) << endmsg; - } else { - key = s_levelSTrans.at( val ); - } - }; - - if ( prop.name() == "ReportLevel" ) { - set( m_reportLevel, IssueSeverity::WARNING ); - } else if ( prop.name() == "TracebackLevel" ) { - set( m_traceLevel, IssueSeverity::ERROR ); - } else { - error() << "setting up unknown property \"" << prop.name() << "\"" << endmsg; - } -} - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *// - -void IssueLogger::setupStreams( Gaudi::Details::PropertyBase& prop ) -{ - - Gaudi::Property>* sap = dynamic_cast>*>( &prop ); - if ( !sap ) { - error() << "Could not convert " << prop.name() - << "to a Gaudi::Property> (which it should be!)" << endmsg; - return; - } - for ( const auto& s : sap->value() ) { - if ( connect( s ).isFailure() ) { - error() << "Could not setup stream " << s << endmsg; - } - } -} - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *// - -void IssueLogger::setupDefaultLogger() -{ - for ( int i = 1; i < IssueSeverity::NUM_LEVELS; ++i ) { - if ( !m_log[i] ) { - // default: dump to msgSvc - IssueSeverity::Level j = IssueSeverity::Level( i ); - m_log[j] = {new StreamLogger( msgSvc(), s_sevMsgMap.at( j ) ), &StreamLogger::WriteToMsgSvc}; - debug() << "Writing " << s_levelTrans.at( j ) << " issues to " << m_log[j].name() << endmsg; - } - } -} diff --git a/GaudiMonitor/src/IssueLogger.h b/GaudiMonitor/src/IssueLogger.h deleted file mode 100644 index d7910c89db..0000000000 --- a/GaudiMonitor/src/IssueLogger.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef GAUDISVC_ISSUELOGGER_H -#define GAUDISVC_ISSUELOGGER_H - -#include "GaudiKernel/IIssueLogger.h" -#include "GaudiKernel/IssueSeverity.h" -#include "GaudiKernel/Property.h" -#include "GaudiKernel/Service.h" -#include "StreamLogger.h" -#include -#include -#include - -class IssueLogger : public extends -{ -public: - IssueLogger( const std::string& name, ISvcLocator* svc ); - ~IssueLogger() override = default; - - StatusCode initialize() override; - StatusCode reinitialize() override; - StatusCode finalize() override; - - void report( IssueSeverity::Level level, const std::string& msg, const std::string& origin ) override; - void report( const IssueSeverity& err ) override; - -private: - Gaudi::Property> m_outputfile{this, "Output"}; - Gaudi::Property m_reportLevelS{this, "ReportLevel", "WARNING"}; - Gaudi::Property m_traceLevelS{this, "TracebackLevel", "ERROR"}; - Gaudi::Property m_showTime{this, "ShowTime", false}; - - IssueSeverity::Level m_reportLevel, m_traceLevel; - - class logger_t final - { - std::unique_ptr m_logger; - void ( StreamLogger::*m_fun )( const std::string& ) = nullptr; - - public: - logger_t() = default; - logger_t( StreamLogger* logger, void ( StreamLogger::*fun )( const std::string& ) ) : m_logger{logger}, m_fun{fun} - { - } - void operator()( const std::string& s ) const { ( m_logger.get()->*m_fun )( s ); } - const std::string& name() const { return m_logger->name(); } - explicit operator bool() const { return bool( m_logger ); } - void reset() { m_logger.reset(); } - }; - std::array m_log; - - StatusCode connect( const std::string& ); - void setupDefaultLogger(); - void setupLevels( Gaudi::Details::PropertyBase& prop ); - void setupStreams( Gaudi::Details::PropertyBase& prop ); -}; - -#endif diff --git a/GaudiMonitor/src/StreamLogger.cpp b/GaudiMonitor/src/StreamLogger.cpp deleted file mode 100644 index 1eac6f27d4..0000000000 --- a/GaudiMonitor/src/StreamLogger.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "StreamLogger.h" -#include - -StreamLogger::StreamLogger( const std::string& file ) - : m_name{"file:" + file}, m_oost{new std::ofstream( file )}, m_ost{m_oost.get()} -{ - if ( !m_oost ) throw std::invalid_argument( "can't open file" ); -} - -StreamLogger::StreamLogger( IMessageSvc* svc, MSG::Level lev ) - : m_name{"MsgStream"}, m_msgStr{new MsgStream( svc, "IssueLogger" )}, m_level{lev} -{ -} - -StreamLogger::StreamLogger( std::ostream& ost ) - : m_name{&ost == &std::cerr ? "STDERR" : &ost == &std::cout ? "STDOUT" : "unknown ostream"}, m_ost{&ost} -{ -} diff --git a/GaudiMonitor/src/StreamLogger.h b/GaudiMonitor/src/StreamLogger.h deleted file mode 100644 index 5b42deb114..0000000000 --- a/GaudiMonitor/src/StreamLogger.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef GAUDISVC_STREAMLOGGER_H -#define GAUDISVC_STREAMLOGGER_H - -#include "GaudiKernel/MsgStream.h" - -#include -#include - -class IMessageSvc; - -class StreamLogger final -{ -public: - StreamLogger( const std::string& file ); - StreamLogger( std::ostream& ost ); - StreamLogger( IMessageSvc*, MSG::Level ); - - const std::string& name() const { return m_name; } - - void WriteToStream( const std::string& str ) { *m_ost << str << std::endl; } - void WriteToMsgSvc( const std::string& str ) { *m_msgStr << m_level << str << endmsg; } - -private: - std::string m_name; - std::unique_ptr m_oost; - std::ostream* m_ost = nullptr; - std::unique_ptr m_msgStr; - MSG::Level m_level = MSG::NIL; -}; - -#endif diff --git a/GaudiSvc/doc/IssueLogger.txt b/GaudiSvc/doc/IssueLogger.txt deleted file mode 100644 index d9311b2bab..0000000000 --- a/GaudiSvc/doc/IssueLogger.txt +++ /dev/null @@ -1,110 +0,0 @@ - -IssueLogger -=========== - -Available Job Options: - (StringArray) Output - (Integer) ReportLevel - (Integer) TracebackLevel - (Boolean) ShowTime - - - -The IssueLogger service makes use of the IssueSeverity object, to -automatically record and stream errors to various outputs. - -IssueSeverity objects are created using the macro "ISSUE", -with two parameters: the error level, and a message. eg: - - ISSUE(Severity::WARNING,"track Chi2 is too high"); - -The available error levels are: - - VERBOSE, - DEBUG, - DEBUG1, - DEBUG2, - DEBUG3, - INFO, - WARNING, - RECOVERABLE, - ERROR, - FATAL - -which are enums in the "Severity" namespace, as defined in -GaudiKernel/IssueSeverity.h. - -The ISSUE macro wraps an IssueSeverity object, and inserts -the file and line number where the object was created. The -constructor of the IssueSeverity object passes this information -to the IssueLogger, which passes it to the appropriate stream, -and appends a stack traceback if desired. - -The IssueLogger output streams are defined at run time, via -jobOptions: - -IssueLogger.Output = {"_Level_='_StreamType_'"}; - - -where _Level_ can be one of - - VERBOSE, - DEBUG, - DEBUG1, - DEBUG2, - DEBUG3, - INFO, - WARNING, - RECOVERABLE, - ERROR, - FATAL - -(ie, the same as the Severity levels), and the _StreamType_ -can be one of - MsgSvc : write to the message service - STDOUT : write to the standard out - STDERR : write to the standard error - a file name : write to a file - -eg: - -IssueLogger.Output = {"DEBUG='MsgSvc'"}; -IssueLogger.Output += {"WARNING='warnings.out'"}; -IssueLogger.Output += {"ERROR='STDERR'"}; - -The default output stream is "MsgSvc". When streaming to the MsgSvc, -the message level used is the same as the that of the IssueSeverity, -ie an IssueSeverity::WARNING object will be written with a -MSG::WARNING message. - -The level of reporting is controlled via two options: "ReportLevel", -and "TraceBackLevel". "ReportLevel" controls the level at which -messages are written out, eg if it's set to INFO, only INFO and -higher ErrorObjects are written out to whatever stream they're -associated with. The "TraceBackLevel" option controls the level at -which a stack trace is attached to the message. - - -IssueSeverity objects can be attached to StatusCodes, either via -the constructor of the StatusCode, or with the conversion operator: - StatusCode sc(StatusCode::FAILURE, - ISSUE(Severity::ERROR,"HV set too low!")); - - - StatusCode sc(ISSUE(Severity::WARNING,"fit parameters off")); - -when the conversion operator is used (ie, the second case), the -IssueSeverity level is used to set the type of the -StatusCode. Anything of WARNING level and down, is set to a -StatusCode::SUCCESS, a RECOVERABLE is set as a StatusCode::RECOVERABLE, -and anything above that is set to a StatusCode::FAILURE. - -Attaching an ISSUE to a StatusCode does not obviate the need to check -whether the StatusCode is a success or failure! - -The IssueSeverity object can be retrieved from a StatusCode using the -StatusCode::severity() method. - - -A timestamp can be printed along with the error message, by setting -the boolean jobOption "ShowTime" to "true". \ No newline at end of file -- GitLab