summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/lib/logger.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-runtime/lib/logger.cc')
-rw-r--r--gnuradio-runtime/lib/logger.cc25
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()) {