zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    ssi服务器端指令
    json格式的转换为json字符串函数
    接口测试基础和jmeter
    【JZOJ6274】梦境
    【JZOJ6275】小L的数列
    【luoguP4721】分治 FFT
    【luoguP3868】猜数字
    中国剩余定理与扩展中国剩余定理
    【JZOJ6277】矩阵游戏
    【JZOJ6271】锻造 (forging)
  • 原文地址:https://www.cnblogs.com/cuitang/p/14892295.html
Copyright © 2011-2022 走看看