aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrej Rode <andrej.rode@ettus.com>2017-04-06 11:53:33 -0700
committerMartin Braun <martin.braun@ettus.com>2017-04-07 14:54:03 -0700
commit543c8c40f1aab7e7c394af4e1195a722fa0a047e (patch)
tree10f073f955bad0295aa9756967d150f0917fd055
parent282d57591b2e9befaff667dc9ab2febabcd61e93 (diff)
downloaduhd-543c8c40f1aab7e7c394af4e1195a722fa0a047e.tar.gz
uhd-543c8c40f1aab7e7c394af4e1195a722fa0a047e.tar.bz2
uhd-543c8c40f1aab7e7c394af4e1195a722fa0a047e.zip
utils: add coloring depending on loglevel to console output
-rw-r--r--host/cmake/Modules/UHDLog.cmake10
-rw-r--r--host/lib/utils/log.cpp37
2 files changed, 46 insertions, 1 deletions
diff --git a/host/cmake/Modules/UHDLog.cmake b/host/cmake/Modules/UHDLog.cmake
index 19b4c39ef..4bc1daf13 100644
--- a/host/cmake/Modules/UHDLog.cmake
+++ b/host/cmake/Modules/UHDLog.cmake
@@ -55,6 +55,16 @@ IF(UHD_LOG_FASTPATH_DISABLE)
ADD_DEFINITIONS(-DUHD_LOG_FASTPATH_DISABLE)
ENDIF()
+IF(MSVC OR CYGWIN)
+ SET(UHD_LOG_CONSOLE_COLOR "OFF" CACHE BOOL "Enable color output on the terminal")
+ELSE()
+ SET(UHD_LOG_CONSOLE_COLOR "ON" CACHE BOOL "Enable color output on the terminal")
+ENDIF()
+
+IF(UHD_LOG_CONSOLE_COLOR)
+ ADD_DEFINITIONS(-DUHD_LOG_CONSOLE_COLOR)
+ENDIF()
+
SET(UHD_LOG_FILE "" CACHE FILE "Set UHD log file to a file in a existing directory")
IF(NOT UHD_LOG_FILE STREQUAL "")
ADD_DEFINITIONS(-DUHD_LOG_FILE=${UHD_LOG_FILE})
diff --git a/host/lib/utils/log.cpp b/host/lib/utils/log.cpp
index 60614d29e..42219e925 100644
--- a/host/lib/utils/log.cpp
+++ b/host/lib/utils/log.cpp
@@ -30,6 +30,35 @@ namespace fs = boost::filesystem;
namespace pt = boost::posix_time;
namespace ip = boost::interprocess;
+static const std::string PURPLE = "\033[35;1m"; // purple
+static const std::string BLUE = "\033[34;1m"; // blue
+static const std::string GREEN = "\033[32;1m"; // green
+static const std::string YELLOW = "\033[33;1m"; // yellow
+static const std::string RED = "\033[31;0m"; // red
+static const std::string BRED = "\033[31;1m"; // bright red
+static const std::string RESET_COLORS = "\033[39;0m"; // reset colors
+
+
+static const std::string verbosity_color(const uhd::log::severity_level &level){
+ switch(level){
+ case (uhd::log::trace):
+ return PURPLE;
+ case(uhd::log::debug):
+ return BLUE;
+ case(uhd::log::info):
+ return GREEN;
+ case(uhd::log::warning):
+ return YELLOW;
+ case(uhd::log::error):
+ return RED;
+ case(uhd::log::fatal):
+ return BRED;
+ default:
+ return RESET_COLORS;
+ }
+}
+
+
/***********************************************************************
* Global resources for the logger
**********************************************************************/
@@ -152,6 +181,7 @@ inline std::string path_to_filename(std::string path)
return path.substr(path.find_last_of("/\\") + 1);
}
+
uhd::_log::log::log(
const uhd::log::severity_level verbosity,
const std::string &file,
@@ -181,6 +211,9 @@ uhd::_log::log::log(
const std::string time = pt::to_simple_string(pt::microsec_clock::local_time());
#endif
_console
+#ifdef UHD_LOG_CONSOLE_COLOR
+ << verbosity_color(verbosity)
+#endif
#ifdef UHD_LOG_CONSOLE_TIME
<< "[" << time << "] "
#endif
@@ -192,6 +225,9 @@ uhd::_log::log::log(
#endif
<< "[" << verbosity << "] "
<< "[" << component << "] "
+#ifdef UHD_LOG_CONSOLE_COLOR
+ << RESET_COLORS
+#endif
;
}
#endif
@@ -225,7 +261,6 @@ uhd::_log::log::~log(void)
<< "Logging has been disabled for this process" << std::endl
;
}
-
}
}