import logging import sys from datetime import datetime # 定义日志级别 TRACE = 5 # 自定义TRACE级别 logging.addLevelName(TRACE, 'TRACE') class CustomLogger(logging.Logger): def __init__(self, name): super().__init__(name) def trace(self, msg, *args, **kwargs): """添加TRACE级别的日志方法""" if self.isEnabledFor(TRACE): self._log(TRACE, msg, args, **kwargs) def get_logger(name='vcast_license'): """获取自定义logger实例""" # 注册自定义Logger类 logging.setLoggerClass(CustomLogger) # 创建logger logger = logging.getLogger(name) logger.setLevel(logging.DEBUG) # 如果logger已经有处理器,直接返回 if logger.handlers: return logger # 创建控制台处理器 console_handler = logging.StreamHandler(sys.stdout) console_handler.setLevel(logging.DEBUG) # 创建格式化器 formatter = logging.Formatter( '%(asctime)s [%(levelname)s] [%(name)s:%(lineno)d] %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) console_handler.setFormatter(formatter) # 添加处理器到logger logger.addHandler(console_handler) return logger # 测试代码 if __name__ == '__main__': log = get_logger() log.trace('这是一条TRACE日志') log.debug('这是一条DEBUG日志') log.info('这是一条INFO日志') log.warning('这是一条WARNING日志') log.error('这是一条ERROR日志') log.critical('这是一条CRITICAL日志')