[python] Flask에서 요청 처리에 대한 로그 기록 방법

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 애플리케이션에서 요청 처리에 대한 로그 기록 방법에 대해 살펴보았습니다. 이를 통해 요청 처리과정을 체계적으로 추적하고 모니터링할 수 있습니다.

참고문헌: