#!/tool/python/3.6.12/bin/python3
"""
@File: logger.py
@Author:
@Date:
@Contact:
@Desc: define Log class
"""
import logging
class ColorHandler(logging.StreamHandler):
"""彩色日志,根据不同级别的日志显示不同颜色"""
def emit(self, record):
try:
msg = self.format(record)
if record.levelno == 10:
print('\033[0;36m%s\033[0m' % msg) # 绿色
elif record.levelno == 20:
print('\033[0;32m%s\033[0m' % msg) # 青蓝色
elif record.levelno == 30:
print('\033[0;34m%s\033[0m' % msg) # 蓝色
elif record.levelno == 40:
print('\033[0;35m%s\033[0m' % msg) # 紫红色
elif record.levelno == 50:
print('\033[0;31m%s\033[0m' % msg) # 血红色
except (KeyboardInterrupt, SystemExit):
raise
except:
self.handleError(record)
class Log:
"""
logger = logging.getLogger("mainModule")
self.logger = logging.getLogger("mainModule.sub.module")
"""
level_dict = {"CRITICAL": 50,
"FATAL": 50,
"ERROR": 40,
"WARNING": 30,
"WARN": 30,
"INFO": 20,
"DEBUG": 10,
"NOTSET": 0}
def __init__(self, level="INFO", name=""):
self.level = self.level_dict[level]
self.logger = logging.getLogger(name)
self.logger.setLevel(self.level)
self.formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s", "%Y-%m-%d %H:%M:%S")
# self.console = logging.StreamHandler()
self.console = ColorHandler()
self.console.setLevel(self.level)
# self.console.setFormatter(self.formatter)
# self.console.setFormatter(logging.Formatter('%(asctime)s - %(message)s', "%Y-%m-%d %H:%M:%S"))
self.console.setFormatter(logging.Formatter( "%(levelname)s: %(message)s"))
self.logger.addHandler(self.console)
def set_log_name(self, log_name):
self.write_log = True
self.handler = logging.FileHandler(log_name, mode='w')
self.handler.setLevel(self.level)
self.handler.setFormatter(self.formatter)
self.logger.addHandler(self.handler)
def clear_logger(self):
if self.write_log:
self.handler.close()
self.logger.removeHandler(self.handler)
self.console.close()
self.logger.removeHandler(self.console)
Python color logging
最新推荐文章于 2024-04-08 21:48:40 发布