Flask-RESTful은 Flask 프레임워크를 확장하여 RESTful API 개발을 편리하게 할 수 있는 도구입니다. API를 구축하면서 로깅은 매우 중요한 요소입니다. 로깅을 통해 어플리케이션의 동작을 모니터링하고 디버깅하는데 도움을 줄 수 있습니다. 이번 글에서는 Flask-RESTful에서 특정 요청에 대한 로깅을 어떻게 구현하는지 알아보겠습니다.
로깅 라이브러리 설치
먼저, Flask-RESTful에서 로깅을 사용하기 위해 logging
라이브러리를 설치해야 합니다.
pip install logging
로거 설정
Flask-RESTful에서 로깅을 사용하려면 로거(logger)를 설정해야 합니다. 로거는 로그 메시지를 생성하고 적절한 출력 위치에 전달하는 역할을 합니다.
import logging
# 로거 생성
logger = logging.getLogger()
# 로그 레벨 설정
logger.setLevel(logging.DEBUG)
# 콘솔 핸들러 생성
console_handler = logging.StreamHandler()
# 로그 포맷 설정
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)
# 로거에 핸들러 추가
logger.addHandler(console_handler)
위 코드에서는 기본 로거를 생성하고 로깅 레벨을 DEBUG
로 설정했습니다. 로그 메시지를 콘솔에 출력하기 위해 콘솔 핸들러를 생성하고 로그 포맷을 설정했습니다. 마지막으로, 로거에 콘솔 핸들러를 추가해주면 설정이 완료됩니다.
로깅 사용
이제 로거가 설정되었으므로 특정 요청에 대한 로깅을 구현할 수 있습니다. Flask-RESTful에서는 before_request
데코레이터를 사용하여 요청이 처리되기 전에 특정 함수를 실행할 수 있습니다. 이를 이용하여 로깅을 추가할 수 있습니다.
from flask import request
from flask_restful import Resource
class MyResource(Resource):
@app.before_request
def log_request_info():
logger.debug('Requested URL: %s', request.url)
logger.debug('Request method: %s', request.method)
logger.debug('Request headers: %s', request.headers)
위 예제에서는 MyResource
클래스에서 before_request
데코레이터를 사용하여 log_request_info
함수를 실행하도록 했습니다. 이 함수에서는 로거를 사용하여 요청에 대한 정보를 로그로 출력하게 됩니다.
실행 결과
위의 코드를 실행하고 API 요청을 보내면 콘솔에 로그 메시지가 출력될 것입니다. 예를 들어, 다음과 같은 요청을 보낸다면:
GET /api/users
콘솔 출력은 다음과 같을 것입니다:
2022-01-01 09:00:00 - DEBUG - Requested URL: /api/users
2022-01-01 09:00:00 - DEBUG - Request method: GET
2022-01-01 09:00:00 - DEBUG - Request headers: {'User-Agent': 'Mozilla/5.0', 'Accept-Language': 'en-US,en;q=0.5'}
참고 자료
위의 예제를 참고하여 Flask-RESTful에서 특정 요청에 대한 로깅을 구현해보세요!