@@ -33,10 +33,19 @@ namespace monitoring
3333{
3434
3535// / List of possible log severities
36+ #ifdef O2_MONITORING_WITH_INFOLOGGER
37+ enum class Severity { Error = InfoLogger::Severity::Error,
38+ Warn = InfoLogger::Severity::Warning,
39+ Info = InfoLogger::Severity::Info,
40+ Silent = InfoLogger::Severity::Debug};
41+
42+ #else
3643enum class Severity { Error = 31 ,
3744 Warn = 33 ,
3845 Info = 49 ,
39- Debug = 50 };
46+ Silent = 50 };
47+ #endif
48+
4049
4150// / Simple Monitoring logging class
4251class MonLogger
@@ -48,7 +57,7 @@ class MonLogger
4857 template <typename T>
4958 MonLogger& operator <<(const T& log)
5059 {
51- if (MonLogger::LogSeverity >= severity ) {
60+ if (! mMute ) {
5261 mStream << log;
5362 }
5463 return *this ;
@@ -58,11 +67,10 @@ class MonLogger
5867 // / Returns Logger instance with current date and given severity
5968 // / \param severity - severity level
6069 // / \return - logger instance
61- static MonLogger& Get (Severity desiredSeverity = Severity::Debug )
70+ static MonLogger& Get (Severity severity = Severity::Silent )
6271 {
6372 static MonLogger loggerInstance;
64- loggerInstance.setSeverity (desiredSeverity);
65- loggerInstance.logHeader ();
73+ loggerInstance.logHeader (severity);
6674 return loggerInstance;
6775 }
6876
@@ -74,27 +82,31 @@ class MonLogger
7482 static auto End () -> decltype(" \033 [0m\n " ) { return " \033 [0m\n " ; }
7583#endif
7684
77- // / Currently set severity
78- const Severity LogSeverity = Severity::Info;
79-
8085 private:
81- // / Instance severity
82- Severity severity;
83-
84- // / Log stream
86+ // / Makes sure Silent messages are muted
87+ bool mMute = false ;
8588#ifdef O2_MONITORING_WITH_INFOLOGGER
89+ // / InfoLogger log output stream
8690 InfoLogger mStream ;
87- void logHeader ()
91+ void logHeader (Severity severity )
8892 {
8993 InfoLoggerContext context;
9094 context.setField (InfoLoggerContext::FieldName::System, " Monitoring" );
9195 context.setField (InfoLoggerContext::FieldName::Facility, " Library" );
9296 mStream .setContext (context);
97+ static InfoLogger::AutoMuteToken wToken ({InfoLogger::Severity::Warning, InfoLogger::Level::Support, -1 , nullptr , -1 }, 2 , 30 );
98+ switch (severity) {
99+ case Severity::Silent: mMute = true ; break ;
100+ case Severity::Warn: mStream << &wToken; break ;
101+ default : mStream << static_cast <InfoLogger::Severity>(severity); break ;
102+ }
93103 }
94104#else
105+ // / Ostream log output stream
95106 std::ostream& mStream = std::cout;
96- void logHeader ()
107+ void logHeader (Severity severity )
97108 {
109+ if (severity == Severity::Silent) { mMute = true ; }
98110 *this << " \033 [0;" << static_cast <int >(severity) << " m" ;
99111 auto now = std::chrono::system_clock::to_time_t (std::chrono::system_clock::now ());
100112 *this << std::put_time (std::localtime (&now), " %Y-%m-%d %X" ) << " \t " << " Monitoring" << " \t " ;
@@ -104,12 +116,6 @@ class MonLogger
104116 // / Sets cout as a log stream
105117 MonLogger () = default ;
106118
107- // / Stream severity setter
108- void setSeverity (Severity desiredSeverity)
109- {
110- severity = desiredSeverity;
111- }
112-
113119 // / Delete copy and move constructors
114120 MonLogger& operator =(const MonLogger&) = delete ;
115121 MonLogger (const MonLogger&) = delete ;
0 commit comments