aboutsummaryrefslogtreecommitdiffstats
path: root/host
diff options
context:
space:
mode:
Diffstat (limited to 'host')
-rw-r--r--host/lib/utils/log.cpp27
-rw-r--r--host/tests/log_test.cpp13
2 files changed, 35 insertions, 5 deletions
diff --git a/host/lib/utils/log.cpp b/host/lib/utils/log.cpp
index 1d87a0b3d..5d0a9cf5b 100644
--- a/host/lib/utils/log.cpp
+++ b/host/lib/utils/log.cpp
@@ -221,13 +221,29 @@ public:
for (const auto &logger : _loggers) {
auto level = logger_level.find(logger.first);
if(level != logger_level.end() && log_info.verbosity < level->second){
- UHD_VAR(level->second)
- continue;
+ continue;
}
logger.second(log_info);
}
}
}
+
+ // Exit procedure: Clear the queue
+ uhd::log::logging_info log_info;
+ while (_log_queue.pop_with_haste(log_info)) {
+ for (const auto &logger : _loggers) {
+ auto level = logger_level.find(logger.first);
+ if (level != logger_level.end() && log_info.verbosity < level->second){
+ continue;
+ }
+ logger.second(log_info);
+ }
+ }
+ }
+
+ void add_logger(const std::string &key, uhd::log::log_fn_t logger_fn)
+ {
+ _loggers[key] = logger_fn;
}
private:
@@ -297,6 +313,13 @@ uhd::_log::log::~log(void)
}
}
+
+void
+uhd::log::add_logger(const std::string &key, log_fn_t logger_fn)
+{
+ log_rs().add_logger(key, logger_fn);
+}
+
void
uhd::log::set_log_level(uhd::log::severity_level level){
log_rs().global_level = level;
diff --git a/host/tests/log_test.cpp b/host/tests/log_test.cpp
index 1973a83ff..d42e5ffbd 100644
--- a/host/tests/log_test.cpp
+++ b/host/tests/log_test.cpp
@@ -20,9 +20,17 @@
#include <iostream>
BOOST_AUTO_TEST_CASE(test_messages){
- uhd::log::set_log_level(uhd::log::info);
+ uhd::log::set_log_level(uhd::log::debug);
uhd::log::set_console_level(uhd::log::info);
- std::cerr << "---begin print test ---" << std::endl;
+ uhd::log::add_logger("test",
+ [](const uhd::log::logging_info &I){
+ std::cout << "<TEST> " << I.message << std::endl;
+ }
+ );
+ uhd::log::set_logger_level("test", uhd::log::debug);
+ UHD_LOGGER_DEBUG("logger_test") <<
+ "This is a test print for a debug log."
+ ;
UHD_LOGGER_INFO("logger_test") <<
"This is a test print for a info log."
;
@@ -35,5 +43,4 @@ BOOST_AUTO_TEST_CASE(test_messages){
UHD_HERE();
const int x = 42;
UHD_VAR(x);
- std::cerr << "---end print test ---" << std::endl;
}