diff options
Diffstat (limited to 'gnuradio-runtime/lib/logger.cc')
-rw-r--r-- | gnuradio-runtime/lib/logger.cc | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/gnuradio-runtime/lib/logger.cc b/gnuradio-runtime/lib/logger.cc index ea3febfc34..eebc4a68e2 100644 --- a/gnuradio-runtime/lib/logger.cc +++ b/gnuradio-runtime/lib/logger.cc @@ -153,6 +153,31 @@ logger_ptr logger_get_logger(std::string name) } } +logger_ptr logger_get_configured_logger(const std::string& name) +{ + if (log4cpp::Category::exists(name)) + return &log4cpp::Category::getInstance(name); + + prefs* p = prefs::singleton(); + std::string config_file = p->get_string("LOG", "log_config", ""); + std::string log_level = p->get_string("LOG", "log_level", "off"); + std::string log_file = p->get_string("LOG", "log_file", ""); + + GR_LOG_GETLOGGER(LOG, "gr_log." + name); + GR_LOG_SET_LEVEL(LOG, log_level); + + if (!log_file.empty()) { + if (log_file == "stdout") { + GR_LOG_SET_CONSOLE_APPENDER(LOG, "stdout", "gr::log :%p: %c{1} - %m%n"); + } else if (log_file == "stderr") { + GR_LOG_SET_CONSOLE_APPENDER(LOG, "stderr", "gr::log :%p: %c{1} - %m%n"); + } else { + GR_LOG_SET_FILE_APPENDER(LOG, log_file, true, "%r :%p: %c{1} - %m%n"); + } + } + return LOG; +} + bool logger_load_config(const std::string& config_filename) { if (!config_filename.empty()) { |