python 日志logging设置按天进行保存,保存近7天,过期日志自动清理

参考文章(写的很详细):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

 

posted on 2021-06-17 10:11  刚刚好1  阅读(7004)  评论(1编辑  收藏  举报

导航