Cleanup requirements & tox config, update pylint
[nfvbench.git] / nfvbench / log.py
index 22afefe..e55c230 100644 (file)
 
 import logging
 
+_product_name = 'nfvbench'
 
-def setup(product_name):
+def setup(mute_stdout=False):
     # logging.basicConfig()
-    formatter_str = '%(asctime)s %(levelname)s %(message)s'
-    handler = logging.StreamHandler()
-    handler.setFormatter(logging.Formatter(formatter_str))
+    if mute_stdout:
+        handler = logging.NullHandler()
+    else:
+        formatter_str = '%(asctime)s %(levelname)s %(message)s'
+        handler = logging.StreamHandler()
+        handler.setFormatter(logging.Formatter(formatter_str))
 
     # Add handler to logger
-    logger = logging.getLogger(product_name)
+    logger = logging.getLogger(_product_name)
     logger.addHandler(handler)
-
-
-def set_level(product, debug=False):
+    # disable unnecessary information capture
+    logging.logThreads = 0
+    logging.logProcesses = 0
+    # to make sure each log record does not have a source file name attached
+    # pylint: disable=protected-access
+    logging._srcfile = None
+    # pylint: enable=protected-access
+
+def add_file_logger(logfile):
+    if logfile:
+        file_formatter_str = '%(asctime)s %(levelname)s %(message)s'
+        file_handler = logging.FileHandler(logfile, mode='w')
+        file_handler.setFormatter(logging.Formatter(file_formatter_str))
+        logger = logging.getLogger(_product_name)
+        logger.addHandler(file_handler)
+
+def set_level(debug=False):
     log_level = logging.DEBUG if debug else logging.INFO
-    logger = logging.getLogger(product)
+    logger = logging.getLogger(_product_name)
     logger.setLevel(log_level)
 
-
-def getLogger(product):
-    logger = logging.getLogger(product)
-
+def getLogger():
+    logger = logging.getLogger(_product_name)
     return logger
 
-LOG = getLogger('nfvbench')
+LOG = getLogger()