带颜色输出
先安装 logging colorlog
pip install logging
pip install colorlog
代码
# 新建 log.py
import logging
import os
from datetime import datetime
import colorlog
# 颜色自定义即可
log_colors_config = {
'DEBUG': 'white',
'INFO': 'blue',
'WARNING': 'yellow',
'ERROR': 'red',
'CRITICAL': 'bold_red',
}
# 输出日志路径
PATH = os.path.abspath('.') + '\\logs'
# 设置日志文件输出格式
FMT = '%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s'
# 设置日志控制台输出格式 %(log_color)s 不能丢 用来显示颜色
console = f"%(log_color)s{FMT}"
# 设置时间格式
DATE_FMT = '%Y-%m-%d %H:%M:%S'
#设置时间格式
file = f'{datetime.now().strftime("%Y-%m-%d_%H_%M")}.log'
class Log(object):
def __init__(self):
self.logger = logging.getLogger()
self.formatter = logging.Formatter(fmt=FMT, datefmt=DATE_FMT)
self.console_formatter = colorlog.ColoredFormatter(fmt=console , datefmt=DATE_FMT, log_colors=log_colors_config)
self.log_filename = f"{PATH}\\{file}"
# 判断文件夹是否存在,不存在则创建
os.path.exists(PATH) or os.makedirs(PATH)
# 判断文件是否存在,不存在则创建 此处为 cmd 创建
os.path.exists(self.log_filename) or (
os.system(f"cd {PATH}") and os.system(r"type nul>{}".format(file)))
# 设置日志的默认级别
self.logger.setLevel(logging.INFO)
self.file_handler = self.file_handler(self.log_filename)
self.console_handler = self.console_handler()
if not self.logger.handlers:
self.logger.addHandler(self.file_handler)
self.logger.addHandler(self.console_handler)
self.file_handler.close()
self.console_handler.close()
# 输出到文件handler的函数定义
def file_handler(self, filename):
file_handler = logging.FileHandler(filename, mode='a', encoding="utf-8")
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(self.formatter)
return file_handler
# 输出到控制台handler的函数定义
def console_handler(self):
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(self.console_formatter)
return console_handler
使用
# 文件路径按照自己的来
from settings.log import Log
log = Log().logger
log.info("INFO")
log.warning("WARNING")
log.error("ERR")
log.debug("DEBUG")
log.critical("CRITICAL")