diff --git a/mpsd-software-environment.py b/mpsd-software-environment.py index 9f612679f0209351e4b73ce6a877cbe0799b83a7..5b6538b65fda4d335473f6d6e9245cfccf7c9eb9 100755 --- a/mpsd-software-environment.py +++ b/mpsd-software-environment.py @@ -12,6 +12,15 @@ import time from pathlib import Path from typing import List, Tuple +# If 'rich' is available ("pip install rich" or "apt-get install python3-rich"), +# then use coloured output, otherwise proceed as before +try: + import rich.logging +except ModuleNotFoundError: + rich_available = False +else: + rich_available = True + about_tool = """ Build toolchains using Spack.\n @@ -61,38 +70,24 @@ def set_up_logging(loglevel="warning", filename=None): if filename: handlers.append(logging.FileHandler(filename)) - # If 'rich' is available ("pip install rich" or "apt-get install python3-rich"), - # then use coloured output, otherwise proceed as before - try: - import rich.logging - except ModuleNotFoundError: - rich_available = False - else: - rich_available = True - if rich_available: - handlers.append(rich.logging.RichHandler()) # set up logging as recommended for rich, see # https://rich.readthedocs.io/en/stable/logging.html - logging.basicConfig( - level=log_level_numeric, - format="%(message)s", - datefmt="[%X]", - handlers=handlers, - force=True, - ) + handlers.append(rich.logging.RichHandler()) + logging_format = "%(message)s" else: # rich not available, define our own output - handlers.append(logging.StreamHandler()) # include line numbers in output if level is DEBUG linenumbers = " %(lineno)4d" if log_level_numeric == logging.DEBUG else "" - - logging.basicConfig( - format="%(asctime)s %(levelname)7s" + linenumbers + " | %(message)s", - datefmt="[%X]", - level=log_level_numeric, - handlers=handlers, - force=True, - ) + handlers.append(logging.StreamHandler()) + logging_format = "%(asctime)s %(levelname)7s" + linenumbers + " | %(message)s" + + logging.basicConfig( + level=log_level_numeric, + format=logging_format, + datefmt="[%X]", + handlers=handlers, + force=True, + ) logging.debug( f"Logging has been setup, loglevel={loglevel.upper()}" + f"{filename=} {rich_available=}"