55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
|
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日志')
|