Skip to content

Commit 19cd619

Browse files
authored
Improve MonLogger severities and integration with InfoLogger (#265)
1 parent 0e7ff6a commit 19cd619

File tree

5 files changed

+33
-27
lines changed

5 files changed

+33
-27
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ endif()
3131

3232
# Define project
3333
project(Monitoring
34-
VERSION 3.8.9
34+
VERSION 3.8.10
3535
DESCRIPTION "O2 Monitoring library"
3636
LANGUAGES CXX
3737
)

src/MonLogger.h

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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
3643
enum 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
4251
class 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;

src/Transports/HTTP.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ void HTTP::send(std::string&& post)
6666
response = curl_easy_perform(mCurl);
6767
curl_easy_getinfo(mCurl, CURLINFO_RESPONSE_CODE, &responseCode);
6868
if (response != CURLE_OK) {
69-
MonLogger::Get(Severity::Error) << "HTTP Tranport " << curl_easy_strerror(response) << MonLogger::End();
69+
MonLogger::Get(Severity::Warn) << "HTTP Tranport " << curl_easy_strerror(response) << MonLogger::End();
7070
}
7171
if (responseCode < 200 || responseCode > 206) {
72-
MonLogger::Get(Severity::Error) << "HTTP Transport: Response code : " << std::to_string(responseCode) << MonLogger::End();
72+
MonLogger::Get(Severity::Warn) << "HTTP Transport: Response code : " << std::to_string(responseCode) << MonLogger::End();
7373
}
7474
}
7575

src/Transports/Kafka.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Kafka::Kafka(const std::string& host, unsigned int port, const std::string& topi
4040

4141
producer = RdKafka::Producer::create(conf, errstr);
4242
if (!producer) {
43-
MonLogger::Get(Severity::Error) << "Coult not initialize Kafka transport" << MonLogger::End();
43+
MonLogger::Get(Severity::Warn) << "Coult not initialize Kafka transport" << MonLogger::End();
4444
}
4545

4646
MonLogger::Get(Severity::Info) << "Kafka transport initialized (" << host << ":" << port << "/" << mTopic << ")" << MonLogger::End();
@@ -64,7 +64,7 @@ void Kafka::send(std::string&& message)
6464
NULL,
6565
NULL);
6666
if (resp != RdKafka::ERR_NO_ERROR) {
67-
MonLogger::Get() << "Kafka send failed: " << RdKafka::err2str(resp) << MonLogger::End();
67+
MonLogger::Get(Severity::Warn) << "Kafka send failed: " << RdKafka::err2str(resp) << MonLogger::End();
6868
}
6969
producer->poll(0);
7070
}

src/Transports/Unix.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ namespace transports
3131
Unix::Unix(const std::string& socketPath) : mSocket(mIoService), mEndpoint(socketPath)
3232
{
3333
if (!std::filesystem::exists(socketPath)) {
34-
MonLogger::Get(Severity::Error) << "Unix socket path is invalid: " << socketPath << MonLogger::End();
34+
MonLogger::Get(Severity::Warn) << "Unix socket path is invalid: " << socketPath << MonLogger::End();
3535
} else {
3636
mSocket.open();
3737
MonLogger::Get(Severity::Info) << "Unix socket transport initialized (" << socketPath << ")" << MonLogger::End();
@@ -43,7 +43,7 @@ void Unix::send(std::string&& message)
4343
try {
4444
mSocket.send_to(boost::asio::buffer(message, message.size()), mEndpoint);
4545
} catch (const boost::system::system_error& e) {
46-
MonLogger::Get() << "Unix socket / " << e.what() << MonLogger::End();
46+
MonLogger::Get(Severity::Warn) << "Unix socket / " << e.what() << MonLogger::End();
4747
}
4848
}
4949
#endif // defined(BOOST_ASIO_HAS_LOCAL_SOCKETS)

0 commit comments

Comments
 (0)