Flask 애플리케이션에서 요청을 처리하고 응답을 보내는 과정은 중요한 업무 처리 과정입니다. 이때 이러한 과정을 로그 기록을 통해 추적 및 모니터링하는 것은 매우 중요합니다. 이 포스트에서는 Flask 애플리케이션에서 요청 처리에 대한 로그 기록을 하는 방법을 알아보겠습니다.
1. Flask 앱에서 기본 로그 설정
Flask 애플리케이션은 Werkzeug 라이브러리를 기본으로 사용하며, Werkzeug는 Python의 표준 라이브러리인 logging
을 사용합니다. 이를 통해 Flask 애플리케이션에서는 기본 로그 설정을 통해 요청 처리 로그를 확인할 수 있습니다.
Flask 애플리케이션을 실행할 때, 다음과 같이 기본 로그 설정을 할 수 있습니다.
import logging
from flask import Flask
app = Flask(__name__)
# 로깅 레벨 설정
app.logger.setLevel(logging.INFO)
# 파일로 로그 저장
file_handler = logging.FileHandler('app.log')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
app.logger.addHandler(file_handler)
위의 코드에서는 app.log
파일에 로그를 저장하도록 설정하였으며, 로깅 레벨은 INFO로 설정했습니다.
2. 요청 처리에 대한 로그 추가
요청이 들어왔을 때, 그에 대한 로그를 추가하여 요청 처리과정을 기록할 수 있습니다. Flask에서는 before_request
데코레이터를 사용하여 요청이 들어왔을 때 로그를 추가할 수 있습니다.
from flask import g, request
@app.before_request
def log_request_info():
app.logger.info('Request %s %s', request.method, request.url)
위의 코드에서는 before_request
에 등록된 함수가 각 요청이 처리되기 전에 호출되어 해당 요청에 대한 정보를 로그로 남기도록 설정하였습니다.
3. 요청 처리 결과에 대한 로그 추가
또한, 각 요청의 처리가 완료된 후에 해당 요청에 대한 결과를 로그로 남길 수 있습니다. 이를 위해서는 Flask의 after_request
데코레이터를 사용할 수 있습니다.
from flask import g
@app.after_request
def log_response_info(response):
app.logger.info('Response %s', response.status)
return response
위의 코드에서는 after_request
에 등록된 함수가 각 요청의 처리가 완료된 후에 해당 응답에 대한 정보를 로그로 남기고, 응답을 반환하도록 설정하였습니다.
이처럼 Flask 애플리케이션에서는 기본 로그 설정 및 요청 처리, 처리 결과에 대한 로그 추가를 통해 요청 처리과정을 로그로 기록할 수 있습니다.
위의 내용을 토대로 Flask 애플리케이션에서 요청 처리에 대한 로그 기록 방법에 대해 살펴보았습니다. 이를 통해 요청 처리과정을 체계적으로 추적하고 모니터링할 수 있습니다.
참고문헌:
- Flask 공식 문서: https://flask.palletsprojects.com/en/2.0.x/
- Werkzeug 공식 문서: https://werkzeug.palletsprojects.com/en/2.0.x/
- Python Logging 모듈 공식 문서: https://docs.python.org/3/library/logging.html