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