pro3_control_panel/base/rtk_logging.py
2025-12-15 09:23:52 +08:00

50 lines
1.6 KiB
Python

#! /usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright (c) 2024 Realtek Semiconductor Corp.
# SPDX-License-Identifier: Apache-2.0
import sys
import logging
from colorama import Fore, Style, init
# init Colorama
init(autoreset=True)
def create_logger(name, log_level="INFO", stream=sys.stdout, file=None):
if log_level == "DEBUG":
level = logging.DEBUG
elif log_level == "WARNING":
level = logging.WARNING
elif log_level == "ERROR":
level = logging.ERROR
elif log_level == "FATAL":
level = logging.FATAL
else:
level = logging.INFO
logger = logging.getLogger(name)
if not logger.handlers:
formatter = logging.Formatter(
fmt=f'[%(asctime)s.%(msecs)03d][%(levelname)s] [{name}]%(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
logging.addLevelName(logging.DEBUG, f"D")
logging.addLevelName(logging.INFO, f"I")
logging.addLevelName(logging.WARNING, f"{Fore.YELLOW}W{Style.RESET_ALL}")
logging.addLevelName(logging.ERROR, f"{Fore.RED}E{Style.RESET_ALL}")
logging.addLevelName(logging.FATAL, f"{Fore.RED}{Style.BRIGHT}F{Style.RESET_ALL}")
consoleHandler = logging.StreamHandler(stream)
consoleHandler.setFormatter(formatter)
logger.addHandler(consoleHandler)
if file is not None:
fileHandler = logging.FileHandler(file, mode='a')
fileHandler.setFormatter(formatter)
logger.addHandler(fileHandler)
logger.propagate = False # Prevent logging from propagating to the root logger
logger.setLevel(level)
return logger