53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
# 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()
|