diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f34e33b..b079f12e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,6 +59,7 @@ find_package(Git QUIET) find_package(ApMon MODULE) find_package(CURL MODULE) find_package(RdKafka CONFIG) +find_package(FairLogger CONFIG) #################################### # Handle RPATH @@ -84,6 +85,10 @@ set(LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/lib") set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin") set(INCLUDE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/include") +# FairLogger +if (FairLogger_FOUND) + message(STATUS "Using FairLogger") +endif() # Backends message(STATUS "Backends") message(STATUS " Compiling StdCout backend") @@ -130,6 +135,7 @@ target_link_libraries(Monitoring $<$:ApMon::ApMon> $<$:RdKafka::rdkafka++> $<$:CURL::libcurl> + $<$:FairLogger::FairLogger> ) # Handle ApMon optional dependency @@ -163,6 +169,7 @@ target_compile_definitions(Monitoring $<$:O2_MONITORING_WITH_APPMON> $<$:O2_MONITORING_WITH_KAFKA> $<$:O2_MONITORING_WITH_CURL> + $<$:O2_MONITORING_WITH_FAIRLOGGER> ) # Use C++17 diff --git a/src/MonLogger.h b/src/MonLogger.h index 1b535460..4cb09628 100644 --- a/src/MonLogger.h +++ b/src/MonLogger.h @@ -19,6 +19,7 @@ #include #include #include +#include namespace o2 { @@ -42,9 +43,13 @@ class MonLogger template MonLogger& operator<<(const T& log) { - if (MonLogger::globalSeverity >= severity) { - mStream << log; +#ifdef O2_MONITORING_WITH_FAIRLOGGER + fair::Logger(fair::Severity::INFO, MSG_ORIGIN) << log; +#else + if (MonLogger::internalSeverity >= severity) { + std::cout << log; } +#endif return *this; } @@ -64,23 +69,22 @@ class MonLogger /// return - string with color termination and new line static auto End() -> decltype("\033[0m\n") { +#ifdef O2_MONITORING_WITH_FAIRLOGGER + return {}; +#else return "\033[0m\n"; +#endif + } /// Currently set severity - const Severity globalSeverity = Severity::Info; + const Severity internalSeverity = Severity::Info; private: /// Instance severity Severity severity; - /// Log stream - std::ostream& mStream; - - /// Sets cout as a log stream - MonLogger(std::ostream& oStream = std::cout) : mStream(oStream) - { - } + MonLogger() = default; /// Appends current datetime to log stream void setDate() @@ -94,7 +98,9 @@ class MonLogger void instanceSeverity(Severity desiredSeverity) { severity = desiredSeverity; +#ifndef O2_MONITORING_WITH_FAIRLOGGER *this << "\033[0;" << static_cast(severity) << "m"; +#endif } /// Delete copy and move constructors