diff options
author | David Winter <david.winter@analog.com> | 2021-06-28 09:46:48 +0200 |
---|---|---|
committer | mormj <34754695+mormj@users.noreply.github.com> | 2021-07-02 14:05:04 -0400 |
commit | 4071620361e32264c2581a77d104c12bfef62133 (patch) | |
tree | e12472cc8582dde463d12c0cf2db9df44d2eb839 /gnuradio-runtime/lib/logger.cc | |
parent | 078d40ddeab957fcc91060131a4b3a1dfe9df676 (diff) |
gr: logger: Add logger_get_configured_logger()
A helper method is added to gr/lib/logger.cc to facilitate the
allocation of loggers which are automatically configured according to the
local GNURadio configuration.
Signed-off-by: David Winter <david.winter@analog.com>
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()) { |