From 6121d0b12bcb308586b5888b6c7e82832f692e5c Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Thu, 6 Sep 2012 12:37:22 -0400
Subject: log: cleaned up naming, added gr_log_get_level function.

Changed the name of the logger in the xml to use a better name.
---
 gnuradio-core/src/lib/runtime/gr_log.h | 150 +++++++++++++++++++++++----------
 1 file changed, 107 insertions(+), 43 deletions(-)

(limited to 'gnuradio-core/src/lib/runtime/gr_log.h')

diff --git a/gnuradio-core/src/lib/runtime/gr_log.h b/gnuradio-core/src/lib/runtime/gr_log.h
index be01da1c6e..4a0449b203 100644
--- a/gnuradio-core/src/lib/runtime/gr_log.h
+++ b/gnuradio-core/src/lib/runtime/gr_log.h
@@ -20,12 +20,12 @@
  * Boston, MA 02110-1301, USA.
  */
 
-/************************************************
-* Copyright 2011 JHU APL
+/*******************************************************************************
+* Copyright 2011 Johns Hopkins University Applied Physics Lab
+* Author: Mark Plett
 * Description:
 *   The gr_log module wraps the log4cxx library for logging in gnuradio
-*
-**************************************************/
+*******************************************************************************/
 
 #ifndef INCLUDED_GR_LOG_H
 #define INCLUDED_GR_LOG_H
@@ -51,9 +51,9 @@
 #include <log4cxx/xml/domconfigurator.h>
 #include <log4cxx/propertyconfigurator.h>
 
-using namespace log4cxx;
-using namespace log4cxx::xml;
-using namespace log4cxx::helpers;
+//using namespace log4cxx;
+//using namespace log4cxx::xml;
+//using namespace log4cxx::helpers;
 
 /*!
  * \brief GR_LOG macros
@@ -73,48 +73,56 @@ using namespace log4cxx::helpers;
   logger_load_config(config)
 
 #define GR_LOG_GETLOGGER(logger, name) \
-  LoggerPtr logger = gr_log::getLogger(name);
+  log4cxx::LoggerPtr logger = gr_log::getLogger(name);
+
+#define GR_SET_LEVEL(name, level){ \
+  log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(name); \
+  logger_set_level(logger, level);}
 
 #define GR_LOG_SET_LEVEL(logger, level) \
   logger_set_level(logger, level);
 
-#define GR_SET_LEVEL(name, level) \
-  LoggerPtr logger = Logger::getLogger(name); \
-  logger_set_level(logger, level);
+#define GR_GET_LEVEL(name, level){ \
+  log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(name); \
+  logger_get_level(logger,level);}
+
+#define GR_LOG_GET_LEVEL(logger, level) \
+  logger_get_level(logger,level);
+
 
 /* Logger name referenced macros */
 #define GR_TRACE(name, msg) { \
-  LoggerPtr logger = Logger::getLogger(name); \
+  log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(name); \
   LOG4CXX_TRACE(logger, msg);}
 
 #define GR_DEBUG(name, msg) { \
-  LoggerPtr logger = Logger::getLogger(name); \
+  log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(name); \
   LOG4CXX_DEBUG(logger, msg);}
 
 #define GR_INFO(name, msg) { \
-  LoggerPtr logger = Logger::getLogger(name); \
+  log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(name); \
   LOG4CXX_INFO(logger, msg);}
 
 #define GR_WARN(name, msg) { \
-  LoggerPtr logger = Logger::getLogger(name); \
+  log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(name); \
   LOG4CXX_WARN(logger, msg);}
 
 #define GR_ERROR(name, msg) { \
-  LoggerPtr logger = Logger::getLogger(name); \
+  log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(name); \
   LOG4CXX_ERROR(logger, msg);}
 
 #define GR_FATAL(name, msg) { \
-  LoggerPtr logger = Logger::getLogger(name); \
+  log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(name); \
   LOG4CXX_FATAL(logger, msg);}
 
 #define GR_ERRORIF(name, cond, msg) { \
-  LoggerPtr logger = Logger::getLogger(name); \
+  log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(name); \
   LOG4CXX_ASSERT(logger, !(cond), msg);}
 
 #define GR_ASSERT(name, cond, msg) { \
-  LoggerPtr logger = Logger::getLogger(name); \
-  LOG4CXX_ASSERT(logger, cond, msg); \
-  assert(cond);}
+  log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(name); \
+  LOG4CXX_ASSERT(logger, (cond), msg); \
+  assert((cond));}
 
 /* LoggerPtr Referenced Macros */
 #define GR_LOG_TRACE(logger, msg) { \
@@ -139,8 +147,8 @@ using namespace log4cxx::helpers;
   LOG4CXX_ASSERT(logger, !(cond), msg);}
 
 #define GR_LOG_ASSERT(logger, cond, msg) { \
-  LOG4CXX_ASSERT(logger, cond, msg); \
-  assert(cond);}
+  LOG4CXX_ASSERT(logger, (cond), msg); \
+  assert((cond));}
 
 
 /*!
@@ -172,7 +180,7 @@ GR_CORE_API void logger_load_config(const std::string &config_filename="");
  * \param logger the logger to set the level of.
  * \param level  string to set the level to.
  */
-GR_CORE_API void logger_set_level(LoggerPtr logger, const std::string &level);
+GR_CORE_API void logger_set_level(log4cxx::LoggerPtr logger, const std::string &level);
 
 /*!
  * \brief Set the logger's output level.
@@ -192,7 +200,48 @@ GR_CORE_API void logger_set_level(LoggerPtr logger, const std::string &level);
  * \param logger the logger to set the level of.
  * \param level  new logger level of type Log4cxx::Level
  */
-void logger_set_level(LoggerPtr logger, log4cxx::LevelPtr level);
+void logger_set_level(log4cxx::LoggerPtr logger, log4cxx::LevelPtr level);
+
+
+/*!
+ * \brief Get the logger's output level.
+ *
+ * Gets the level of the logger. This returns a string that
+ * corresponds to the standard levels and can be (case insensitive):
+ *
+ * \li off
+ * \li all
+ * \li trace
+ * \li debug
+ * \li info
+ * \li warn
+ * \li error
+ * \li fatal
+ *
+ * \param logger the logger to get the level of.
+ * \param level  string to get the level into.
+ */
+GR_CORE_API void logger_get_level(log4cxx::LoggerPtr logger,std::string &level);
+
+/*!
+ * \brief Get the logger's output level.
+ *
+ * Gets the level of the logger. This returns the actual Log4cxx::Level
+ * data type, which can be:
+ *
+ * \li log4cxx::Level::getOff()
+ * \li log4cxx::Level::getAll()
+ * \li log4cxx::Level::getTrace()
+ * \li log4cxx::Level::getDebug()
+ * \li log4cxx::Level::getInfo()
+ * \li log4cxx::Level::getWarn()
+ * \li log4cxx::Level::getError()
+ * \li log4cxx::Level::getFatal()
+ *
+ * \param logger the logger to get the level of.
+ */
+void logger_get_level(log4cxx::LoggerPtr logger,log4cxx::LevelPtr level);
+
 
 /*!
  * \brief instantiate (configure) logger.
@@ -218,23 +267,33 @@ class gr_log
   {
     // Load configuration file
     if(config_filename.find(".xml")!=std::string::npos) {
-      DOMConfigurator::configureAndWatch(config_filename, watchPeriodSec);
+      log4cxx::xml::DOMConfigurator::configureAndWatch(config_filename, watchPeriodSec);
     }
     else {
-      PropertyConfigurator::configureAndWatch(config_filename, watchPeriodSec);
+      log4cxx::PropertyConfigurator::configureAndWatch(config_filename, watchPeriodSec);
     }
   };
 
-  static LoggerPtr getLogger(std::string name)
+  static log4cxx::LoggerPtr getLogger(std::string name)
   {
-    LoggerPtr logger = Logger::getLogger(name);
-    return logger;
+    if(log4cxx::LogManager::exists(name)) {
+      log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(name);
+      return logger;
+    }
+    else {
+      log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(name);
+      logger->setLevel(log4cxx::Level::getOff());
+      return logger;
+    };
   };
 
+  // Wrappers for logging macros
   /*! \brief inline function, wrapper to set the logger level */
   void set_level(std::string name,std::string level){GR_SET_LEVEL(name,level);}
   
-  // Wrappers for logging macros
+  /*! \brief inline function, wrapper to get the logger level */
+  void get_level(std::string name,std::string &level){GR_GET_LEVEL(name,level);}
+
   /*! \brief inline function, wrapper for LOG4CXX_TRACE for TRACE message */
   void trace(std::string name,std::string msg){GR_TRACE(name,msg);};
 
@@ -259,42 +318,45 @@ class gr_log
   /*! \brief inline function, wrapper for LOG4CXX_ASSERT for conditional ERROR message */
   void gr_assert(std::string name,bool cond,std::string msg){GR_ASSERT(name,cond,msg);};
 
-
+  // Wrappers for Logger Pointer referenced functions
   /*! \brief inline function, wrapper to set the logger level */
-  void set_log_level(LoggerPtr logger,std::string level){GR_LOG_SET_LEVEL(logger,level);}
+  void set_log_level(log4cxx::LoggerPtr logger,std::string level){GR_LOG_SET_LEVEL(logger,level);}
+
+  /*! \brief inline function, wrapper to get the logger level */
+  void get_log_level(log4cxx::LoggerPtr logger,std::string &level){GR_LOG_GET_LEVEL(logger,level);}
 
   /*! \brief inline function, wrapper for LOG4CXX_TRACE for TRACE message */
-  void log_trace(LoggerPtr logger,std::string msg){GR_LOG_TRACE(logger,msg);};
+  void log_trace(log4cxx::LoggerPtr logger,std::string msg){GR_LOG_TRACE(logger,msg);};
 
   /*! \brief inline function, wrapper for LOG4CXX_DEBUG for DEBUG message */
-  void log_debug(LoggerPtr logger,std::string msg){GR_LOG_DEBUG(logger,msg);};
+  void log_debug(log4cxx::LoggerPtr logger,std::string msg){GR_LOG_DEBUG(logger,msg);};
 
   /*! \brief inline function, wrapper for LOG4CXX_INFO for INFO message */
-  void log_info(LoggerPtr logger,std::string msg){GR_LOG_INFO(logger,msg);};
+  void log_info(log4cxx::LoggerPtr logger,std::string msg){GR_LOG_INFO(logger,msg);};
 
   /*! \brief inline function, wrapper for LOG4CXX_WARN for WARN message */
-  void log_warn(LoggerPtr logger,std::string msg){GR_LOG_WARN(logger,msg);};
+  void log_warn(log4cxx::LoggerPtr logger,std::string msg){GR_LOG_WARN(logger,msg);};
 
   /*! \brief inline function, wrapper for LOG4CXX_ERROR for ERROR message */
-  void log_error(LoggerPtr logger,std::string msg){GR_LOG_ERROR(logger,msg);};
+  void log_error(log4cxx::LoggerPtr logger,std::string msg){GR_LOG_ERROR(logger,msg);};
 
   /*! \brief inline function, wrapper for LOG4CXX_FATAL for FATAL message */
-  void log_fatal(LoggerPtr logger,std::string msg){GR_LOG_FATAL(logger,msg);};
+  void log_fatal(log4cxx::LoggerPtr logger,std::string msg){GR_LOG_FATAL(logger,msg);};
 
   /*! \brief inline function, wrapper for LOG4CXX_ASSERT for conditional ERROR message */
-  void log_errorIF(LoggerPtr logger,bool cond,std::string msg){GR_LOG_ERRORIF(logger,cond,msg);};
+  void log_errorIF(log4cxx::LoggerPtr logger,bool cond,std::string msg){GR_LOG_ERRORIF(logger,cond,msg);};
 
   /*! \brief inline function, wrapper for LOG4CXX_ASSERT for conditional ERROR message */
-  void log_assert(LoggerPtr logger,bool cond,std::string msg){GR_LOG_ASSERT(logger,cond,msg);};
+  void log_assert(log4cxx::LoggerPtr logger,bool cond,std::string msg){GR_LOG_ASSERT(logger,cond,msg);};
 };
 
 
 //If ENABLE_GR_LOG not set then clear all logging macros
 #else
-
 #define GR_CONFIG_LOGGER(config)
 #define GR_LOG_GETLOGGER(logger, name) 
-#define GR_LOG_SET_LEVEL(logger, level)
+#define GR_SET_LEVEL(logger, level)
+#define GR_GET_LEVEL(logger, level)
 #define GR_TRACE(name, msg)
 #define GR_DEBUG(name, msg)
 #define GR_INFO(name, msg)
@@ -303,6 +365,8 @@ class gr_log
 #define GR_FATAL(name, msg) 
 #define GR_ERRORIF(name, cond, msg)
 #define GR_ASSERT(name, cond, msg)
+#define GR_LOG_SET_LEVEL(logger, level)
+#define GR_LOG_GET_LEVEL(logger, level)
 #define GR_LOG_TRACE(logger, msg)
 #define GR_LOG_DEBUG(logger, msg)
 #define GR_LOG_INFO(logger, msg) 
-- 
cgit v1.2.3