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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM