From fdbc5565f37191ec24902840e456d6c4821f5cad Mon Sep 17 00:00:00 2001 From: Karl W Schulz Date: Fri, 8 Mar 2024 15:02:48 -0600 Subject: [PATCH] rework of logger.py setup to introduce another setup_file_handler() - this function enables file-based logger output for use with profile mode Signed-off-by: Karl W Schulz [ROCm/rocprofiler-compute commit: 505e26327950f60da948b66812174bb8c249703e] --- .../rocprofiler-compute/src/utils/logger.py | 39 ++++++++++++++----- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/projects/rocprofiler-compute/src/utils/logger.py b/projects/rocprofiler-compute/src/utils/logger.py index 1d33933ded..3fea66d788 100644 --- a/projects/rocprofiler-compute/src/utils/logger.py +++ b/projects/rocprofiler-compute/src/utils/logger.py @@ -51,21 +51,32 @@ class ColoredFormatter(logging.Formatter): return logging.Formatter.format(self, record) -# Setup logger handler - provided as separate function to be called +# Setup console handler - provided as separate function to be called # prior to argument parsing -def setup_logging_handler(): +def setup_console_handler(): if False: formatter = ColoredFormatter("%(levelname)s %(message)s") else: formatter = logging.Formatter("%(message)s") - handler = logging.StreamHandler(sys.stdout) - handler.setFormatter(formatter) - logging.basicConfig(handlers=[handler]) + console_handler = logging.StreamHandler(sys.stdout) + console_handler.setFormatter(formatter) + console_handler.set_name("console") + logging.getLogger().addHandler(console_handler) -# Setup logger priority -def setup_logging_priority(verbosity, quietmode): +# Setup file handler - enabled in profile mode +def setup_file_handler(loglevel, workload_dir): + filename = os.path.join(workload_dir, "log.txt") + file_handler = logging.FileHandler(filename, "w") + file_loglevel = min([loglevel, logging.INFO]) + file_handler.setLevel(file_loglevel) + file_handler.setFormatter(logging.Formatter("%(message)s")) + logging.getLogger().addHandler(file_handler) + + +# Setup logger priority - called after argument parsing +def setup_logging_priority(verbosity, quietmode, appmode): # register a trace level logger logging.TRACE = logging.DEBUG - 5 logging.addLevelName(logging.TRACE, "TRACE") @@ -95,6 +106,16 @@ def setup_logging_priority(verbosity, quietmode): print("Ignoring unsupported OMNIPERF_LOGLEVEL setting (%s)" % loglevel) sys.exit(1) - # update priority - logging.getLogger().setLevel(loglevel) + # update console loglevel based on command-line args/env settings + for handler in logging.getLogger().handlers: + if handler.get_name() == "console": + handler.setLevel(loglevel) + + # set global loglevel to min of console/file settings in profile mode + if appmode == "profile": + global_loglevel = min([logging.INFO, loglevel]) + logging.getLogger().setLevel(global_loglevel) + else: + logging.getLogger().setLevel(loglevel) + return loglevel