1. 개요
Flask-RESTful은 Python에서 RESTful API를 구축하기 위한 간단하고 강력한 프레임워크입니다. API를 개발할 때, 클라이언트의 요청과 서버의 응답에 대한 로깅은 매우 유용한 디버깅 도구입니다. 이 기사에서는 Flask-RESTful에서 API 요청에 대한 로깅 방법을 알아봅니다.
2. Flask-RESTful에서 로깅 설정하기
Flask-RESTful에서 API 요청에 대한 로깅을 적용하기 위해서는 Flask의 logging 모듈을 사용해야 합니다. Flask는 기본적으로 Werkzeug라는 웹 서버용 로깅 모듈을 제공하지만, Flask-RESTful에서는 이를 조금 수정하여 API 요청에 대한 로깅을 추가할 수 있습니다.
먼저, Flask 애플리케이션을 초기화하는 코드에서 다음과 같이 logging 모듈을 import 합니다.
from flask import Flask
import logging
그런 다음, 로거 인스턴스를 만들고 레벨을 설정합니다.
app = Flask(__name__)
log = logging.getLogger('werkzeug')
log.setLevel(logging.DEBUG)
이제 로깅이 설정되었으므로, API 요청에 대한 로그를 출력하도록 Flask-RESTful에 알릴 필요가 있습니다. 이를 위해 @app.before_request
데코레이터를 사용하여 전처리 함수를 정의합니다.
@app.before_request
def before_request_func():
log.debug('API 요청 받음 - {}'.format(request.url))
위의 코드에서는 앞서 초기화한 로거의 debug 메서드를 사용하여 API 요청이 수신되면 그 URL을 로그로 출력하도록 설정하였습니다.
추가로, API 응답에 대한 로깅도 포함하고 싶다면 @app.after_request
데코레이터를 사용하여 후처리 함수를 정의할 수 있습니다.
@app.after_request
def after_request_func(response):
log.debug('API 응답 - {}'.format(response.status))
return response
위의 코드에서는 응답 객체의 status 속성을 사용하여 응답 상태를 로그로 출력하도록 설정하였습니다.
3. 로깅 구성 변경하기
Flask-RESTful의 로깅 기본 설정은 Werkzeug의 기본 로깅 구성을 따르지만, 필요에 따라 로그 형식, 로그 레벨 등을 수정할 수 있습니다. Werkzeug의 logging 모듈을 사용하여 로깅 구성을 변경할 수 있습니다.
예를 들어, 로그 형식을 수정하려면 다음과 같이 로그 핸들러의 형식을 변경할 수 있습니다.
from flask import Flask
import logging
app = Flask(__name__)
log = logging.getLogger('werkzeug')
# 로그 형식 변경
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
for handler in log.handlers:
handler.setFormatter(formatter)
위의 코드에서는 logging.Formatter
를 사용하여 로그 핸들러의 형식을 수정하였습니다.
4. 결론
이 기사에서는 Flask-RESTful에서 API 요청에 대한 로깅하는 방법을 알아보았습니다. Flask-RESTful은 간단하지만 무척 강력한 프레임워크이며, 로깅을 통해 디버깅을 더욱 수월하게 할 수 있습니다. Flask-RESTful의 로깅 설정을 변경하여 필요에 맞게 로깅을 조정할 수도 있습니다. 사용자의 요구에 따라 로깅 설정을 자유롭게 수정하여 효과적인 디버깅을 할 수 있습니다.
참고 자료
- Flask-RESTful 공식 문서: http://flask-restful.readthedocs.io/
- Flask 공식 문서: http://flask.pocoo.org/docs/
- Werkzeug 공식 문서: https://werkzeug.palletsprojects.com/