Files
TheRock/rocm-libraries/projects/hipblaslt/tensilelite/Tensile/ductile/utils/logger.py
T
derek.holloway 7502bf64a4
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
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

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)