CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
106 lines
3.1 KiB
Python
106 lines
3.1 KiB
Python
# Copyright Advanced Micro Devices, Inc., or its affiliates.
|
|
# SPDX-License-Identifier: MIT
|
|
import logging
|
|
import math
|
|
import numbers
|
|
import os
|
|
import numpy as np
|
|
|
|
LEVELS = {0: logging.WARNING,
|
|
1: logging.INFO,
|
|
2: logging.DEBUG}
|
|
|
|
|
|
def setup(name: str,
|
|
fmt: str,
|
|
level: int = logging.INFO,
|
|
log_file: str = None,
|
|
mode: str = "w"):
|
|
|
|
logger = logging.getLogger(name)
|
|
if logger.hasHandlers():
|
|
logger.handlers.clear()
|
|
|
|
logger.setLevel(level)
|
|
fmt = logging.Formatter(fmt)
|
|
handlers = [logging.StreamHandler()]
|
|
if log_file:
|
|
log_file = os.fspath(log_file)
|
|
log_dir = os.path.dirname(log_file)
|
|
if log_dir:
|
|
os.makedirs(log_dir, exist_ok=True)
|
|
handlers.append(logging.FileHandler(log_file, mode=mode))
|
|
for hdlr in handlers:
|
|
hdlr.setLevel(level)
|
|
hdlr.setFormatter(fmt)
|
|
logger.addHandler(hdlr)
|
|
return logger
|
|
|
|
|
|
class Logger:
|
|
def __init__(self,
|
|
name: str,
|
|
verbose: int = 1,
|
|
log_file: str = None):
|
|
|
|
if log_file and os.path.isfile(log_file):
|
|
try:
|
|
os.remove(log_file)
|
|
except FileNotFoundError:
|
|
pass
|
|
|
|
self.level = LEVELS[verbose]
|
|
|
|
self.msg_logger = setup(f"name_msg",
|
|
"%(message)s",
|
|
level=self.level,
|
|
log_file=log_file,
|
|
mode="a")
|
|
self.app_logger = setup(name,
|
|
"%(name)s:%(levelname)s %(message)s",
|
|
level=self.level,
|
|
log_file=log_file,
|
|
mode="a")
|
|
|
|
self.log = self.app_logger.log
|
|
self.info = self.app_logger.info
|
|
self.debug = self.app_logger.debug
|
|
self.warn = self.app_logger.warning
|
|
self.warning = self.app_logger.warning
|
|
self.error = self.app_logger.error
|
|
self.critical = self.app_logger.critical
|
|
self.exception = self.app_logger.exception
|
|
self.fatal = self.app_logger.fatal
|
|
|
|
def print(self, msg: str):
|
|
self.msg_logger.info(msg)
|
|
|
|
def log_lines(self, msg: str, level: int):
|
|
for line in f"{msg}".split("\n"):
|
|
self.log(level, line)
|
|
|
|
def print_stats(self, **kwargs):
|
|
header = " "
|
|
row = " "
|
|
for i, (k, v) in enumerate(kwargs.items(), 1):
|
|
if isinstance(v, numbers.Number):
|
|
width = int(math.log10(v)) + 3 if v > 0 else 3
|
|
if isinstance(v, (float, np.floating)):
|
|
v = round(float(v), 3)
|
|
width += 2
|
|
width = max(width, len(k))
|
|
else:
|
|
width = max(len(k), len(v))
|
|
header += f"{k:^{width}}"
|
|
row += f"{v:^{width}}"
|
|
if i < len(kwargs):
|
|
header += " | "
|
|
row += " | "
|
|
|
|
n = len(header) + 2
|
|
self.print("=" * n)
|
|
self.print(header)
|
|
self.print("-" * n)
|
|
self.print(row)
|
|
self.print("=" * n)
|