[python] Flask-RESTful에서 수동 로깅 대신 자동 로깅 설정 방법

Flask-RESTful은 Python 웹 프레임워크인 Flask를 기반으로한 REST API를 빠르고 간편하게 개발하기 위한 도구입니다. Flask-RESTful은 기본적으로 로깅을 제공하지 않지만, Python의 기본 로깅 모듈인 logging을 사용하여 자동 로깅을 구현할 수 있습니다.

이번 블로그 포스트에서는 Flask-RESTful에서 수동 로깅을 대신하여 자동 로깅을 설정하는 방법에 대해 알아보겠습니다.

1. Flask-RESTful과 logging 모듈 임포트하기

먼저, Flask-RESTful과 logging 모듈을 임포트해야 합니다. 아래 코드를 참고하세요.

from flask import Flask
from flask_restful import Api, Resource
import logging

2. 로깅 설정하기

다음으로, 로깅을 설정해야 합니다. Flask 애플리케이션을 생성한 후 로깅 설정을 추가해야 합니다. 아래 코드를 참고하세요.

app = Flask(__name__)
api = Api(app)

# 로깅 설정
log_format = '%(asctime)s [%(levelname)s] %(message)s'
logging.basicConfig(filename='app.log', level=logging.INFO, format=log_format)

위 코드에서는 basicConfig 함수를 사용하여 로깅 설정을 추가하였습니다. filename 인자를 통해 로그 파일의 이름을 지정할 수 있으며, level 인자를 통해 로그 레벨을 설정할 수 있습니다. 위 코드에서는 로그 레벨을 INFO로 설정하였습니다.

3. API 엔드포인트에 로깅 추가하기

이제 API의 각 엔드포인트에서 로깅을 추가해야 합니다. Flask-RESTful에서는 Resource 클래스를 상속받은 클래스를 만들어 API 엔드포인트를 정의합니다. 아래 코드를 참고하세요.

class HelloWorld(Resource):
    def get(self):
        app.logger.info('HelloWorld GET 요청')
        return {'message': 'Hello, World!'}

api.add_resource(HelloWorld, '/hello')

위 예제에서는 HelloWorld 클래스에서 GET 메서드가 호출될 때마다 app.logger를 사용하여 로그를 추가하였습니다. 이렇게 로깅을 추가하면 API 요청과 응답에 대한 정보를 로그로 남길 수 있습니다.

4. 실행 및 로그 확인

위의 설정이 완료된 후, Flask 애플리케이션을 실행하고 /hello 엔드포인트에 GET 요청을 보내면 로그 파일에 로그가 기록됩니다.

$ python app.py

위와 같이 애플리케이션을 실행한 후, 브라우저나 curl을 사용하여 http://localhost:5000/hello에 GET 요청을 보내면 로그 파일인 app.log에 로그가 기록됩니다.

마치며

Flask-RESTful로 개발한 REST API에서 로깅을 자동으로 설정하는 방법에 대해 알아보았습니다. 로깅을 사용하면 애플리케이션의 동작 상황을 통계 및 분석하고 디버깅하는 데 도움이 됩니다. Flask-RESTful과 logging을 적절히 함께 사용하면 효과적인 로깅 시스템을 구축할 수 있습니다.

참고문서: