move logging to runtime init 15/36815/5
authorRoss Brattain <ross.b.brattain@intel.com>
Thu, 22 Jun 2017 01:49:08 +0000 (18:49 -0700)
committerRoss Brattain <ross.b.brattain@intel.com>
Sat, 1 Jul 2017 09:33:41 +0000 (02:33 -0700)
There are many ways to init logging, but
doing import-time logic can cause problems.

For yardstick we are doing this type of run-time
init in the main program startup.

This allows for some flexibiliy since we just
set the root loggers.  Every other logger is
standard, not subclassed

Change-Id: I7004a147f03a7104f373141caf9206d8e49a5d4c
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
anteater/__init__.py
anteater/main.py
anteater/src/get_lists.py
anteater/src/patch_scan.py
anteater/src/project_scan.py
anteater/utils/__init__.py [deleted file]
anteater/utils/anteater_logger.py [deleted file]

index e69de29..d514059 100644 (file)
@@ -0,0 +1,4 @@
+from __future__ import absolute_import
+import logging
+
+LOG = logging.getLogger(__name__)
index 3a23ceb..ef127c2 100644 (file)
@@ -25,33 +25,63 @@ Options:
 """
 from __future__ import absolute_import
 
+import errno
+import logging
+
+import os
 import six.moves.configparser
 from docopt import docopt
-import os
+
+from anteater import LOG
 from anteater.src.patch_scan import prepare_patchset
 from anteater.src.project_scan import prepare_project
-from anteater.utils import anteater_logger as antlog
-
 
 config = six.moves.configparser.RawConfigParser()
 config.read('anteater.conf')
 reports_dir = config.get('config', 'reports_dir')
-logger = antlog.Logger(__name__).getLogger()
 __version__ = "0.1"
+logger = logging.getLogger(__name__)
+
+
+def _init_logging(anteater_log):
+    """ Setup root logger for package """
+
+    LOG.setLevel(logging.DEBUG)
+    ch = logging.StreamHandler()
+    formatter = logging.Formatter('%(asctime)s - %(name)s - '
+                                  '%(levelname)s - %(message)s')
+    ch.setFormatter(formatter)
+    ch.setLevel(logging.DEBUG)
+
+    # create the directory if it does not exist
+    path = os.path.dirname(anteater_log)
+    try:
+        os.makedirs(path)
+    except OSError as e:
+        if e.errno != errno.EEXIST:
+            raise
+
+    handler = logging.FileHandler(anteater_log)
+    handler.setFormatter(formatter)
+    handler.setLevel(logging.DEBUG)
+    del logging.root.handlers[:]
+    logging.root.addHandler(ch)
+    logging.root.addHandler(handler)
 
 
 def check_dir():
     """ Creates a directory for scan reports """
     try:
         os.makedirs(reports_dir)
-        logger.info('Creating reports directory: {0}'.format(reports_dir))
+        logger.info('Creating reports directory: %s', reports_dir)
     except OSError as e:
-        if not os.path.isdir(reports_dir):
-            logger.error(e)
+        if e.errno != errno.EEXIST:
+            raise
 
 
 def main():
     """ Main function, mostly for passing arguments """
+    _init_logging(config.get('config', 'anteater_log'))
     check_dir()
     arguments = docopt(__doc__, version=__version__)
 
index e27335a..b8c6cda 100644 (file)
@@ -15,7 +15,7 @@
 """
 from __future__ import absolute_import
 
-import anteater.utils.anteater_logger as antlog
+import logging
 import six.moves.configparser
 import copy
 import os
@@ -25,7 +25,7 @@ import re
 
 config = six.moves.configparser.RawConfigParser()
 config.read('anteater.conf')
-logger = antlog.Logger(__name__).getLogger()
+logger = logging.getLogger(__name__)
 master_list = config.get('config', 'master_list')
 
 with open(master_list, 'r') as f:
index 71604a8..e61dfca 100644 (file)
@@ -18,7 +18,7 @@
 
 from __future__ import division, print_function, absolute_import
 from binaryornot.check import is_binary
-import anteater.utils.anteater_logger as antlog
+import logging
 import hashlib
 import six.moves.configparser
 import sys
@@ -26,7 +26,7 @@ import re
 
 from . import get_lists
 
-logger = antlog.Logger(__name__).getLogger()
+logger = logging.getLogger(__name__)
 config = six.moves.configparser.RawConfigParser()
 config.read('anteater.conf')
 reports_dir = config.get('config', 'reports_dir')
index 647c256..3886801 100644 (file)
@@ -20,12 +20,12 @@ import hashlib
 import six.moves.configparser
 import os
 import re
-import anteater.utils.anteater_logger as antlog
+import logging
 from binaryornot.check import is_binary
 
 from . import get_lists
 
-logger = antlog.Logger(__name__).getLogger()
+logger = logging.getLogger(__name__)
 config = six.moves.configparser.RawConfigParser()
 config.read('anteater.conf')
 reports_dir = config.get('config', 'reports_dir')
diff --git a/anteater/utils/__init__.py b/anteater/utils/__init__.py
deleted file mode 100644 (file)
index 1db8868..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-from __future__ import absolute_import
-import pkg_resources
-
-try:
-    __version__ = pkg_resources.get_distribution(__name__).version
-except:
-    __version__ = 'unknown'
diff --git a/anteater/utils/anteater_logger.py b/anteater/utils/anteater_logger.py
deleted file mode 100644 (file)
index 785e644..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-##############################################################################
-# Copyright (c) 2017 jose.lausuch@ericsson.com
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-
-from __future__ import absolute_import
-
-import logging
-
-import os
-import six.moves.configparser
-
-config = six.moves.configparser.RawConfigParser()
-config.read('anteater.conf')
-anteater_log = config.get('config', 'anteater_log')
-
-
-class Logger:
-    def __init__(self, logger_name):
-        self.logger = logging.getLogger(logger_name)
-        self.logger.propagate = 0
-        self.logger.setLevel(logging.DEBUG)
-
-        ch = logging.StreamHandler()
-        formatter = logging.Formatter('%(asctime)s - %(name)s - '
-                                      '%(levelname)s - %(message)s')
-        ch.setFormatter(formatter)
-        ch.setLevel(logging.DEBUG)
-        self.logger.addHandler(ch)
-
-        # create the directory if not existed
-        path = os.path.dirname(anteater_log)
-        if ( False == os.path.exists(path)):
-            try:
-                os.makedirs(path)
-            except OSError as e:
-                raise e
-
-        handler = logging.FileHandler(anteater_log)
-        handler.setFormatter(formatter)
-        handler.setLevel(logging.DEBUG)
-        self.logger.addHandler(handler)
-
-    def getLogger(self):
-        return self.logger