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

Flask-RESTful은 Python 웹 프레임워크인 Flask를 기반으로 한 RESTful API를 구축하기 위한 도구입니다. 이 도구를 사용하면 간단하게 API 엔드포인트를 정의하고 요청과 응답을 처리할 수 있습니다. 이번에는 Flask-RESTful에서 클라이언트의 요청에 대한 로그를 기록하는 방법에 대해 알아보겠습니다.

Logging 모듈 사용하기

Python에는 로깅을 위한 기능을 제공하는 logging 모듈이 있습니다. Flask-RESTful에서도 이 모듈을 사용하여 요청에 대한 로그를 기록할 수 있습니다. 아래는 예시 코드입니다.

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

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

# 로그 설정
log = logging.getLogger('my_logger')
log.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')

# 로그 파일로 기록
file_handler = logging.FileHandler('api.log')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
log.addHandler(file_handler)

class MyResource(Resource):
    def get(self):
        # 로그 기록
        log.info('GET 요청이 들어왔습니다.')
        return {'message': 'GET 요청을 받았습니다.'}, 200

api.add_resource(MyResource, '/my-resource')

if __name__ == '__main__':
    app.run(debug=True)

위의 코드에서는 logging 모듈을 사용하여 my_logger라는 이름의 로거를 생성하고, 해당 로거의 로그 레벨을 DEBUG로 설정한 후, 파일로 로그를 기록하도록 설정했습니다. GET 메서드가 호출될 때마다 log.info()를 통해 로그를 기록하고, 파일에 로그가 저장됩니다.

로그를 기록할 파일명과 로그 레벨 등을 적절하게 설정하여 위의 코드를 실행하면, API 서버가 실행되고 클라이언트의 요청에 대한 로그가 파일에 기록될 것입니다.

결론

Flask-RESTful에서 클라이언트의 요청에 대한 로그를 기록하는 방법을 살펴보았습니다. logging 모듈을 사용하여 로깅 기능을 구현하고, 로그 파일에 요청과 관련된 정보를 저장할 수 있습니다. 이를 통해 API의 운영과 디버깅에 도움이 될 수 있습니다.

참고 자료