python日志按天分割,保存近一個月日志,日志自動清理


python日志按天分割,保存近一個月日志

import os
import logging
import re
from logging.handlers import TimedRotatingFileHandler


def setup_log(log_name):
    # 創建logger對象。傳入logger名字
    logger = logging.getLogger(log_name)
    log_path = os.path.join("J:\loggering日志學習\log_save",log_name)
    # 設置日志記錄等級
    logger.setLevel(logging.INFO)
    # interval 滾動周期,
    # when="MIDNIGHT", interval=1 表示每天0點為更新點,每天生成一個文件
    # backupCount  表示日志保存個數
    file_handler = TimedRotatingFileHandler(
        filename=log_path, when="MIDNIGHT", interval=1, backupCount=30
    )
    # filename="mylog" suffix設置,會生成文件名為mylog.2020-02-25.log
    file_handler.suffix = "%Y-%m-%d.log"
    # extMatch是編譯好正則表達式,用於匹配日志文件名后綴
    # 需要注意的是suffix和extMatch一定要匹配的上,如果不匹配,過期日志不會被刪除。
    file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$")
    # 定義日志輸出格式
    file_handler.setFormatter(
        logging.Formatter(
            "[%(asctime)s] [%(process)d] [%(levelname)s] - %(module)s.%(funcName)s (%(filename)s:%(lineno)d) - %(message)s"
        )
    )
    logger.addHandler(file_handler)
    return logger


if __name__ == "__main__":
    logger = setup_log("mylog")
    logger.info("this is info message")
    logger.warning("this is a warning message")
    try:
        int("xjk")
    except ValueError as e:
        logger.error(e)
# 如果其他py文件想使用此配置日志,只需 logging.getLogger(日志的名字)  即可

  • 顯示效果:


免責聲明!

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



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