首页 > 解决方案 > RotatingFileHandler 没有在跨越 maxBytes 值时创建文件

问题描述

我正在研究旋转文件处理程序。一旦文件大小超过给定的 maxBytes 值,我需要创建另一个文件。但代码似乎不能正常工作

import logging
from logging.handlers import RotatingFileHandler
    
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(message)s",
    handlers=[
        RotatingFileHandler("./app.log", maxBytes=100, backupCount=5)
    ],
)

logger = logging.getLogger("DemoLogger")
    
@router.get('/demo_api/v1')
    def default_rd(db: Session = Depends(get_db)):
        try:
            Category_data = db.query(models.table_new.id, models.table_new.Label).filter(models.table_new.classCode=='Category').all()
        except Exception:
            logger.exception("Database Error")
            
        else:
            logger.warning("Fetched Category data")

标签: pythonfastapipython-logging

解决方案


一个基于你的最小示例在程序运行的目录中愉快地创建了 app.log、app.log.1、app.log.2、app.log.3、app.log.4、app.log.5。请注意,/app.log已更改为./app.log.

如果应用这些更改没有帮助,那么您的应用程序中的其他代码一定有问题,您没有显示。

import logging
from logging.handlers import RotatingFileHandler

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(message)s",
    handlers=[
        RotatingFileHandler("./app.log", maxBytes=100, backupCount=5)
    ],
)

logger = logging.getLogger("DemoLogger")

for x in range(1000):
    logger.info("Blah, %s", x)

推荐阅读