From 53316ac7b87e7d674e012a5c71f2b08d41c027f8 Mon Sep 17 00:00:00 2001 From: Ross Brattain Date: Wed, 21 Jun 2017 18:49:08 -0700 Subject: move logging to runtime init 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 --- anteater/main.py | 44 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 7 deletions(-) (limited to 'anteater/main.py') diff --git a/anteater/main.py b/anteater/main.py index 3a23ceb..ef127c2 100644 --- a/anteater/main.py +++ b/anteater/main.py @@ -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__) -- cgit 1.2.3-korg