vcast_license_usage_server/my_log.py

55 lines
1.6 KiB
Python
Raw Normal View History

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日志')