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

  • 相关阅读:
    117. Populating Next Right Pointers in Each Node II
    116. Populating Next Right Pointers in Each Node
    DFS & BFS
    Binary Search
    博客保存
    python强大的正则表达式
    游戏注意的地方
    vim使用
    下一步的
    lua的动态特性
  • 原文地址:https://www.cnblogs.com/cuitang/p/14892295.html
Copyright © 2011-2022 走看看