[python] Flask-RESTful에서 성능 모니터링을 위한 로그 설정 방법

Flask-RESTful은 Python 웹 프레임워크인 Flask를 기반으로 한 RESTful API를 쉽게 개발할 수 있도록 도와주는 확장 모듈입니다. 성능 모니터링은 애플리케이션의 성능을 평가하고 최적화하기 위해 중요한 요소입니다. 이 글에서는 Flask-RESTful에서 성능 모니터링을 위한 로그 설정 방법에 대해 알아보겠습니다.

로그 설정

Flask-RESTful은 Flask의 로깅 시스템을 사용하기 때문에, Flask의 로깅 설정을 따라갑니다. 로깅 설정은 app.logger 객체를 통해 설정할 수 있습니다. Flask-RESTful에서 성능 모니터링을 위한 로그 설정은 다음과 같습니다.

1. 로그 레벨 설정

app.logger.setLevel(logging.DEBUG)

로그 레벨을 DEBUG로 설정하면, 모든 로그 메시지를 출력합니다. 성능 모니터링을 위해서는 디버그 레벨의 로그를 활성화하는 것이 좋습니다. 단, 실제 배포 환경에서는 로그 레벨을 조정하여 적절한 로그 메시지만 출력되도록 유지해야 합니다.

2. 로그 포맷 설정

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler = logging.StreamHandler()
handler.setFormatter(formatter)
app.logger.addHandler(handler)

위 코드는 로그 메시지의 포맷을 설정하는 부분입니다. 현재 시간, 로그 이름, 로그 레벨, 메시지가 포함된 포맷을 지정하고, StreamHandler를 사용하여 콘솔에 로그 메시지를 출력합니다.

3. 성능 모니터링 로그 추가

@app.after_request
def log_response(response):
    app.logger.debug(f'URL: {request.url} - Time: {time.time()} - Status: {response.status_code}')
    return response

@app.after_request 데코레이터를 사용하면 응답이 전송되기 전에 실행됩니다. 위 코드는 응답이 전송될 때마다 접속 URL, 응답 시간, 응답 상태 코드를 로그로 출력합니다.

위와 같이 Flask-RESTful에서 로그를 설정하면 애플리케이션의 성능을 모니터링할 수 있습니다. 로그 레벨, 포맷, 추가할 성능 모니터링 로그를 조정하여 필요한 정보를 수집할 수 있습니다.


참고 자료