6

我正在将我的代码从 Python 烧瓶迁移到 Fast-API。我在将记录器添加到快速 API 时遇到问题,它将显示

“AttributeError:‘FastAPI’对象没有属性‘logger’”

请参阅代码以获取更多信息

from fastapi import FastAPI, HTTPException
import uvicorn
from logging.handlers import RotatingFileHandler
import logging

app = FastAPI()

if __name__ == '__main__':

    formatter = logging.Formatter(
        "[%(asctime)s.%(msecs)03d] %(levelname)s [%(thread)d] - %(message)s", "%Y-%m-%d %H:%M:%S")
    handler = RotatingFileHandler('/log/abc.log', backupCount=0)
    logging.getLogger().setLevel(logging.NOTSET)
    app.logger.addHandler(handler)
    handler.setFormatter(formatter)

    app.logger.info('****************** Starting Server *****************') # "AttributeError: 'FastAPI' object has no attribute 'logger'"
    uvicorn.run()
4

1 回答 1

11

您应该导入 fastapi 记录器,然后对其进行操作。from fastapi.logger import logger

from fastapi import FastAPI, HTTPException
from fastapi.logger import logger as fastapi_logger
import uvicorn
from logging.handlers import RotatingFileHandler
import logging

app = FastAPI()

if __name__ == '__main__':

    formatter = logging.Formatter(
        "[%(asctime)s.%(msecs)03d] %(levelname)s [%(thread)d] - %(message)s", "%Y-%m-%d %H:%M:%S")
    handler = RotatingFileHandler('/log/abc.log', backupCount=0)
    logging.getLogger().setLevel(logging.NOTSET)
    fastapi_logger.addHandler(handler)
    handler.setFormatter(formatter)

    fastapi_logger.info('****************** Starting Server *****************')
    uvicorn.run()
于 2020-03-09T19:40:20.240 回答