- 对日志模块简单的封装了下,日志在控制台打印如果错误的话会不同颜色提示,废话不多说,直接上代码!!!
# 打印日志
import logging
import time
import os
# 获取本地路径
path = os.path.dirname(os.path.dirname(__file__))
# log_path是存放日志的路径
log_path = os.path.join(path, 'logs')
# 如果不存在这个logs文件夹,就自动创建一个
if not os.path.exists(log_path):
os.mkdir(log_path)
class Log(object):
def __init__(self):
# 文件的命名
self.log_name = os.path.join(log_path, './%s.log' % time.strftime('%Y_%m_%d'))
self.logger = logging.getLogger('Airtest')
self.logger.setLevel(logging.INFO)
# 文件日志输出格式
self.fh_formatter = logging.Formatter(
f'%(asctime)s -| %(name)s -| {log_path}| %(levelname)s -| %(message)s')
def __console(self, color, level, message):
# 创建一个fileHandler,用于写入本地
fh = logging.FileHandler(self.log_name, 'a', encoding='utf-8')
# 输出文件日志的级别
fh.setLevel(logging.DEBUG)
fh.setFormatter(self.fh_formatter)
self.logger.addHandler(fh)
# 创建一个StreamHandler,用于输入到控制台
# 控制台日志输出格式
self.ch_formatter = logging.Formatter(
color % f'%(asctime)s -| %(name)s -| {log_path}| %(levelname)s -| %(message)s')
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(self.ch_formatter)
self.logger.addHandler(ch)
if level == 'info':
self.logger.info(message)
elif level == 'debug':
self.logger.debug(message)
elif level == 'warning':
self.logger.warning(message)
elif level == 'error':
self.logger.error(message)
# 避免日志重复
self.logger.removeHandler(fh)
self.logger.removeHandler(ch)
# 关闭打开文件
fh.close()
# 此处是对不同日志信息打印到控制台不同颜色提示,方便快速找到错误位置,颜色可自行调整
def debug(self, message):
self.__console('\033[0;32m%s\033[0m', 'debug', message)
def info(self, message):
self.__console('\033[0;34m%s\033[0m', 'info', message)
def warning(self, message):
self.__console('\033[0;37m%s\033[0m', 'warning', message)
def error(self, message):
self.__console('\033[0;31m%s\033[0m', 'error', message)
暂时不能在文件中不同颜色提示,如有会的网友可以一起讨论下