日志管理工具类
import logging
from logging.handlers import TimedRotatingFileHandler
from utils.file_manage import YamlManage
from utils.path_manage import Path
import osclass Logger(object):def __init__(self,loggername):
self.logger = logging.getLogger(loggername)
logging.root.setLevel(logging.NOTSET)
c = YamlManage('config.yml').get_data('log')
self.log_file_name = c.get('file_name') if c and c.get('file_name') else 'test.log'# 日志文件
self.backup_count = c.get('backup') if c and c.get('backup') else 5# 保留的日志数量
# 日志输出级别
self.console_output_level = c.get('console_level') if c and c.get('console_level') else 'WARNING'
self.file_output_level = c.get('file_level') if c and c.get('file_level') else 'DEBUG'
# 日志输出格式
pattern = c.get('pattern') if c and c.get('pattern') else '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
self.formatter = logging.Formatter(pattern)def get_logger(self):
"""在logger中添加日志句柄并返回,如果logger已有句柄,则直接返回
我们这里添加两个句柄,一个输出日志到控制台,另一个输出到日志文件。
两个句柄的日志级别不同,在配置文件中可设置。
"""
ifnot self.logger.handlers:# 避免重复日志
console_handler = logging.StreamHandler()
console_handler.setFormatter(self.formatter)
console_handler.setLevel(self.console_output_level)
self.logger.addHandler(console_handler)# 每天重新创建一个日志文件,最多保留backup_count份
file_handler = TimedRotatingFileHandler(filename=os.path.join(Path().base_path,"log", self.log_file_name),
when='D',
interval=1,
backupCount=self.backup_count,
delay=True,
encoding='utf-8'
)
file_handler.setFormatter(self.formatter)
file_handler.setLevel(self.file_output_level)
self.logger.addHandler(file_handler)
return self.logger
配置为
log:
backup: 5
console_level: DEBUG
file_level: DEBUG
file_name: ahb.log
log: null
pattern: '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
【接口自动化测试框架|接口自动化--日志管理】输出结果为:
文章图片
推荐阅读
- 接口自动化测试框架|接口自动化--数据库
- python自动化测试|python自动化之数据驱动 - data driven(参数化)
- python|分享5个你不知道的软件测试小神器(赶紧收藏起来)
- chrome|Selenium Chrome驱动安装(windows系统)
- Python自动化测试|【Python自动化测试17】openpyxl二次封装与数据驱动
- vue|2022 年最新前端 Vue 项目重构总结
- SQL|python操作mysql插入数据
- oeasy教您玩转python - 010 - # 不换行输出
- Python|Pycharm 搭建 Django 项目 (非常详细)