Alter logging semantics for VPP PAPI object 21/12921/3
authorIan Wells <iawells@cisco.com>
Wed, 6 Jun 2018 13:12:27 +0000 (14:12 +0100)
committerChris Luke <chris_luke@comcast.com>
Wed, 6 Jun 2018 19:10:54 +0000 (19:10 +0000)
Logging previously used a string name for the log level and changed
the system-wide log level based on this string name.  It now uses a
logging-module provided constant for the log level and changes its own
logger's level based on the name, and only if the level is provided.

This allows the logging to be more compatible with Pythonic usage,
where an external source may be used to dictate logging levels across
the system on a per module basis and should not be overridden.

Change-Id: Icf6896ff61a29b12c11d04374767322cdb330323
Signed-off-by: Ian Wells <iawells@cisco.com>
src/vpp-api/python/vpp_papi.py

index 7305ef3..ece0e4e 100644 (file)
@@ -116,7 +116,7 @@ class VPP():
     these messages in a background thread.
     """
     def __init__(self, apifiles=None, testmode=False, async_thread=True,
-                 logger=logging.getLogger('vpp_papi'), loglevel='debug',
+                 logger=None, loglevel=None,
                  read_timeout=0):
         """Create a VPP API object.
 
@@ -125,11 +125,20 @@ class VPP():
         dynamically created reflecting these APIs.  If not
         provided this will load the API files from VPP's
         default install location.
+
+        logger, if supplied, is the logging logger object to log to.
+        loglevel, if supplied, is the log level this logger is set
+        to report at (from the loglevels in the logging module).
         """
         global vpp_object
         vpp_object = self
+
+        if logger is None:
+            logger = logging.getLogger(__name__)
+            if loglevel is not None:
+                logger.setLevel(loglevel)
+
         self.logger = logger
-        logging.basicConfig(level=getattr(logging, loglevel.upper()))
 
         self.messages = {}
         self.id_names = []