# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. 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()