参考文章(写的很详细):https://www.cnblogs.com/xujunkai/p/12364619.html
前言:
跑接口自动化或者其他程序运行时,如果只能保存一份log文件,可能会存在,log文件越来越大的问题,加载缓慢,查找日志也比较慢,增加日志根据天来保存,定期清理日志,可以达到日志更好的管理,更加方便日志查找。
怎么实现?
使用的是python语言,加上logging的TimedRotatingFileHandler实现
# 3、 输出到文件拓展,每天生成一个文件,保存近3天的的log文件,防止文件过大的 # interval 滚动周期, when="MIDNIGHT", interval=1 表示每天0点为更新点,每天生成一个文件,backupCount 表示日志保存个数 # filename:要加上每天的日期拼接组成 logs_path = os.path.join(project_path.logs_path_day, 'log') file_hander = TimedRotatingFileHandler(filename=logs_path, when='MIDNIGHT', interval=1, backupCount=3) # 设置生成日志文件名的格式,以年-月-日来命名 # suffix设置,会生成文件名为log.2020-02-25.log file_hander.suffix = "%Y-%m-%d.log" # extMatch是编译好正则表达式,用于匹配日志文件名后缀 # 需要注意的是suffix和extMatch一定要匹配的上,如果不匹配,过期日志不会被删除。 file_hander.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$") file_hander.setFormatter(formatter)
可以更改日志的滚动周期来验证日志的生成效果,如
【注意点】
如果设置按S来生成日志文件的,注意不要传入文件名不允许的标点符号,如“:”,否则,会报文件名或目录不合法的错误
所以在设置文件名的格式的时候,要用其他符号代替“:”,比如“-”
正确写法:file_hander.suffix = "%Y-%m-%d %H-%M-%S.log"
OS报错写法:%Y-%m-%d %H:%M:%S
生成日志文件的名称,TimedRotatingFileHandler有默认设置,如果想修改suffix 和extmatch,需要和suffix匹配,否则无法删除
https://blog.csdn.net/qgf1099062139/article/details/83619280
删除日志时的exmatch,匹配正则表达式
https://blog.csdn.net/ashi198866/article/details/46725813