diff options
author | Luc Provoost <luc.provoost@intel.com> | 2020-12-16 15:47:49 +0100 |
---|---|---|
committer | Luc Provoost <luc.provoost@intel.com> | 2020-12-28 12:11:29 +0100 |
commit | 9822834527c84e6e2d36b8b6d9aa81d0facd2a8a (patch) | |
tree | 2562c9be8fd2d78d7f8eb3530e4df5802478479e /VNFs/DPPD-PROX/helper-scripts/rapid/rapid_log.py | |
parent | 63eeeaf4c2b27db28a0c4fb0c5806978b0a5796d (diff) |
Improved PROX cleanup when exiting
Sending now a 'quit' command to PROX, so that the thread running PROX in
an ssh session is now cleaned up correctly.
Also fixed a problem with the logging when running the code more than
once. We only create handlers now, when they do not yet exist.
Updated the rapid version.
Also added some more tests in the testcases.yaml for xtesting.
At the end of a run, the PROX.log files are copied in the results
directory.
The success criterium for a test 'pass_threshold' has been removed from
the test files and is to be controlled by the xtesting testcases.yaml
file.
Change-Id: Ifbbb1c91f32c9176f52025d9ae4c495b432a94c9
Signed-off-by: Luc Provoost <luc.provoost@intel.com>
Diffstat (limited to 'VNFs/DPPD-PROX/helper-scripts/rapid/rapid_log.py')
-rw-r--r-- | VNFs/DPPD-PROX/helper-scripts/rapid/rapid_log.py | 118 |
1 files changed, 68 insertions, 50 deletions
diff --git a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_log.py b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_log.py index d1460f55..f453c574 100644 --- a/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_log.py +++ b/VNFs/DPPD-PROX/helper-scripts/rapid/rapid_log.py @@ -42,56 +42,67 @@ class RapidLog(object): @staticmethod def log_init(log_file, loglevel, screenloglevel, version): - # create formatters - screen_formatter = logging.Formatter("%(message)s") - file_formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s") - - # get a top-level logger, - # set its log level, - # BUT PREVENT IT from propagating messages to the root logger - # - log = logging.getLogger() - numeric_level = getattr(logging, loglevel.upper(), None) - if not isinstance(numeric_level, int): - raise ValueError('Invalid log level: %s' % loglevel) - log.setLevel(numeric_level) - log.propagate = 0 - - # create a console handler - # and set its log level to the command-line option - # - console_handler = logging.StreamHandler(sys.stdout) - #console_handler.setLevel(logging.INFO) - numeric_screenlevel = getattr(logging, screenloglevel.upper(), None) - if not isinstance(numeric_screenlevel, int): - raise ValueError('Invalid screenlog level: %s' % screenloglevel) - console_handler.setLevel(numeric_screenlevel) - console_handler.setFormatter(screen_formatter) - - # create a file handler - # and set its log level - # - file_handler = logging.handlers.RotatingFileHandler(log_file, backupCount=10) - #file_handler = log.handlers.TimedRotatingFileHandler(log_file, 'D', 1, 5) - file_handler.setLevel(numeric_level) - file_handler.setFormatter(file_formatter) - - # add handlers to the logger - # - log.addHandler(file_handler) - log.addHandler(console_handler) - - # Check if log exists and should therefore be rolled - needRoll = os.path.isfile(log_file) - - - # This is a stale log, so roll it - if needRoll: - # Add timestamp - log.debug('\n---------\nLog closed on %s.\n---------\n' % time.asctime()) - - # Roll over on application start - file_handler.doRollover() + log = logging.getLogger(__name__) + makeFileHandler = True + makeStreamHandler = True + if len(log.handlers) > 0: + for handler in log.handlers: + if isinstance(handler, logging.FileHandler): + makeFileHandler = False + elif isinstance(handler, logging.StreamHandler): + makeStreamHandler = False + if makeStreamHandler: + # create formatters + screen_formatter = logging.Formatter("%(message)s") + # create a console handler + # and set its log level to the command-line option + # + console_handler = logging.StreamHandler(sys.stdout) + #console_handler.setLevel(logging.INFO) + numeric_screenlevel = getattr(logging, screenloglevel.upper(), None) + if not isinstance(numeric_screenlevel, int): + raise ValueError('Invalid screenlog level: %s' % screenloglevel) + console_handler.setLevel(numeric_screenlevel) + console_handler.setFormatter(screen_formatter) + # add handler to the logger + # + log.addHandler(console_handler) + if makeFileHandler: + # create formatters + file_formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s") + # get a top-level logger, + # set its log level, + # BUT PREVENT IT from propagating messages to the root logger + # + numeric_level = getattr(logging, loglevel.upper(), None) + if not isinstance(numeric_level, int): + raise ValueError('Invalid log level: %s' % loglevel) + log.setLevel(numeric_level) + log.propagate = 0 + + + # create a file handler + # and set its log level + # + file_handler = logging.handlers.RotatingFileHandler(log_file, backupCount=10) + file_handler.setLevel(numeric_level) + file_handler.setFormatter(file_formatter) + + # add handler to the logger + # + log.addHandler(file_handler) + + # Check if log exists and should therefore be rolled + needRoll = os.path.isfile(log_file) + + + # This is a stale log, so roll it + if needRoll: + # Add timestamp + log.debug('\n---------\nLog closed on %s.\n---------\n' % time.asctime()) + + # Roll over on application start + file_handler.doRollover() # Add timestamp log.debug('\n---------\nLog started on %s.\n---------\n' % time.asctime()) @@ -100,6 +111,13 @@ class RapidLog(object): RapidLog.log = log @staticmethod + def log_close(): + for handler in RapidLog.log.handlers: + if isinstance(handler, logging.FileHandler): + handler.close() + RapidLog.log.removeHandler(handler) + + @staticmethod def exception(exception_info): RapidLog.log.exception(exception_info) raise Exception(exception_info) |