[python] FastAPI에서 로깅 방법 및 설정하기

FastAPI는 빠르고 현대적인 웹 프레임워크로서, 로깅을 효과적으로 관리할 수 있는 기능을 제공합니다. 이 글에서는 FastAPI에서 로그를 작성하고 관리하기 위한 방법과 설정에 대해 알아보겠습니다.

라이브러리 설치하기

FastAPI에서 로깅을 사용하기 위해서는 uvicornloguru 라이브러리를 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다.

pip install fastapi uvicorn loguru

로깅 설정하기

FastAPI에서 로깅을 설정하려면 loguru 라이브러리를 사용해야 합니다. main.py 파일을 만들고 다음 코드를 작성해 보겠습니다.

from fastapi import FastAPI
import uvicorn
from loguru import logger

app = FastAPI()

# 로깅 설정
logger.add("./logs/app.log", rotation="500 MB", retention="10 days", level="INFO")

@app.get("/")
async def root():
    logger.info("Hello, World!")
    return {"message": "Hello, World!"}

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

위의 코드에서 logger.add 함수를 사용하여 로그 파일의 경로 및 로그의 보관 기간, 로그의 레벨을 설정할 수 있습니다. 위의 예제에서는 ./logs/app.log 파일에 로그를 기록하고, 500MB를 넘어가면 로그 파일이 자동으로 백업되며, 10일까지 로그를 유지합니다. 로그 레벨은 INFO로 설정했으므로, logger.info 함수를 사용하여 로그를 작성하면 해당 내용이 로그 파일에 기록됩니다.

로그 확인하기

위의 설정을 통해 로그 파일이 작성되었는지 확인해 보겠습니다. main.py 파일을 실행한 후 http://localhost:8000에 접속하면 로그파일에 “Hello, World!”라는 내용이 기록됩니다. 로그 파일을 열어서 로그를 확인해 보세요.

로그 레벨 변경하기

로그의 레벨을 변경하여 원하는 로그만을 기록하도록 설정할 수 있습니다. logger.add 함수의 level 파라미터를 변경하여 로그 레벨을 조정할 수 있습니다. 다음은 로그 레벨에 대한 몇 가지 예시입니다.

예를 들어, 로그 레벨을 DEBUG로 변경하려면 다음과 같이 코드를 수정할 수 있습니다.

logger.add("./logs/app.log", rotation="500 MB", retention="10 days", level="DEBUG")

요약

FastAPI에서 로깅을 설정하고 관리하는 방법에 대해 알아보았습니다. loguru 라이브러리를 사용하여 로그 파일의 경로, 보관 기간, 로그 레벨을 설정할 수 있으며, 설정된 로깅을 통해 원하는 메시지를 기록하고 확인할 수 있습니다. 로깅은 애플리케이션의 디버깅 및 모니터링에 중요한 역할을 수행하므로, 적절한 로깅 설정을 통해 더욱 안정적인 서비스를 개발할 수 있습니다.

참고 자료: