From 2e09f0be7ef02521cb393a45ef9e7d0646b64eb9 Mon Sep 17 00:00:00 2001 From: colramos-amd Date: Tue, 30 Jan 2024 17:22:11 -0600 Subject: [PATCH] Standalone logging module for cleaner omniperf_base.py Signed-off-by: colramos-amd --- src/utils/logger.py | 79 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/utils/logger.py diff --git a/src/utils/logger.py b/src/utils/logger.py new file mode 100644 index 0000000000..df508d4aed --- /dev/null +++ b/src/utils/logger.py @@ -0,0 +1,79 @@ +##############################################################################bl +# MIT License +# +# Copyright (c) 2021 - 2024 Advanced Micro Devices, Inc. All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +##############################################################################el + +import logging +import os +import sys +from utils.utils import trace_logger + +# Define the colors +BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(8) +RESET_SEQ = "\033[0m" +COLOR_SEQ = "\033[1;%dm" + +COLORS = { + 'WARNING': YELLOW, + 'INFO': GREEN, + 'DEBUG': BLUE, + 'CRITICAL': YELLOW, + 'ERROR': RED +} + +# Define the formatter +class ColoredFormatter(logging.Formatter): + def format(self, record): + levelname = record.levelname + if levelname in COLORS: + levelname_color = COLOR_SEQ % (30 + COLORS[levelname]) + levelname + RESET_SEQ + record.levelname = levelname_color + return logging.Formatter.format(self, record) + +# Setup logger +def setup_logging(): + # register a trace level logger + logging.TRACE = logging.DEBUG - 5 + logging.addLevelName(logging.TRACE, "TRACE") + setattr(logging, "TRACE", logging.TRACE) + setattr(logging, "trace", trace_logger) + + # demonstrate override of default loglevel via env variable + loglevel=logging.INFO + if "OMNIPERF_LOGLEVEL" in os.environ.keys(): + loglevel = os.environ['OMNIPERF_LOGLEVEL'] + if loglevel in {"DEBUG","debug"}: + loglevel = logging.DEBUG + elif loglevel in {"TRACE","trace"}: + loglevel = logging.TRACE + elif loglevel in {"INFO","info"}: + loglevel = logging.INFO + elif loglevel in {"ERROR","error"}: + loglevel = logging.ERROR + else: + print("Ignoring unsupported OMNIPERF_LOGLEVEL setting (%s)" % loglevel) + sys.exit(1) + + formatter = ColoredFormatter('%(levelname)s - %(message)s') + handler = logging.StreamHandler(sys.stdout) + handler.setFormatter(formatter) + logging.basicConfig(level=loglevel, handlers=[handler]) \ No newline at end of file