Spaces:
Running
on
Zero
Running
on
Zero
# Copyright (c) 2024 Amphion. | |
# | |
# This source code is licensed under the MIT license found in the | |
# LICENSE file in the root directory of this source tree. | |
import functools | |
import logging | |
__all__ = [ | |
"logger", | |
] | |
class Logger(object): | |
def __init__(self, name: str = None): | |
name = "PaddleSpeech" if not name else name | |
self.logger = logging.getLogger(name) | |
log_config = { | |
"DEBUG": 10, | |
"INFO": 20, | |
"TRAIN": 21, | |
"EVAL": 22, | |
"WARNING": 30, | |
"ERROR": 40, | |
"CRITICAL": 50, | |
"EXCEPTION": 100, | |
} | |
for key, level in log_config.items(): | |
logging.addLevelName(level, key) | |
if key == "EXCEPTION": | |
self.__dict__[key.lower()] = self.logger.exception | |
else: | |
self.__dict__[key.lower()] = functools.partial(self.__call__, level) | |
self.format = logging.Formatter( | |
fmt="[%(asctime)-15s] [%(levelname)8s] - %(message)s" | |
) | |
self.handler = logging.StreamHandler() | |
self.handler.setFormatter(self.format) | |
self.logger.addHandler(self.handler) | |
self.logger.setLevel(logging.INFO) | |
self.logger.propagate = False | |
def __call__(self, log_level: str, msg: str): | |
self.logger.log(log_level, msg) | |
logger = Logger() | |