[파이썬] 웹 프레임워크를 이용한 실시간 로깅 시스템

로그는 개발자에게 매우 중요한 도구입니다. 애플리케이션에서 발생하는 이벤트와 오류를 기록하고 분석하여 문제를 해결하는 데 도움이 됩니다. 웹 프레임워크를 이용하여 실시간 로깅 시스템을 구축하면 개발자는 애플리케이션의 상태를 실시간으로 모니터링할 수 있습니다. 이번 포스트에서는 Python 언어와 Flask 웹 프레임워크를 사용하여 간단한 실시간 로깅 시스템을 구현하는 방법에 대해 알아보겠습니다.

1. 필요한 패키지 설치하기

먼저, 프로젝트에 필요한 패키지들을 설치해야 합니다. Python의 가상 환경을 사용하는 것이 좋습니다. 가상 환경을 만들고, Flask와 Flask-SocketIO를 설치합니다.

$ python3 -m venv myenv
$ source myenv/bin/activate
$ pip install Flask Flask-SocketIO

2. Flask 프로젝트 및 기본 세팅

Flask 프로젝트를 생성하고, 기본 세팅을 해봅시다. 프로젝트 폴더를 만들고 main.py라는 이름의 파일을 생성합니다.

from flask import Flask, render_template
from flask_socketio import SocketIO

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secretkey'
socketio = SocketIO(app)

@app.route('/')
def index():
    return render_template('index.html')

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

3. 실시간 로깅 기능 추가하기

Flask-SocketIO를 사용하여 실시간으로 로깅 메시지를 전송하고 표시할 수 있습니다. 위에서 생성한 main.py 파일에 다음 코드를 추가해 봅시다.

import logging
from logging.handlers import SocketHandler

# SocketIO를 이용하여 로깅 메시지를 전송하는 핸들러 생성
socket_handler = SocketHandler('localhost', 5000)
socket_handler.setLevel(logging.DEBUG)

# 메인 로거에 핸들러 추가
app.logger.addHandler(socket_handler)

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

4. 프론트엔드 코드 작성하기

이제 실시간 로깅을 표시할 프론트엔드 코드를 작성해봅시다. templates 폴더를 생성하고, 그 안에 index.html 파일을 하나 만듭니다.

<!DOCTYPE html>
<html>
  <head>
    <title>Real-time Logging System</title>
  </head>
  <body>
    <h1>Real-time Logging System</h1>
    <ul id="log-list"></ul>

    <script src="https://cdn.socket.io/socket.io-3.1.0.min.js"></script>
    <script>
      const socket = io();
      
      // 실시간으로 전달받은 로깅 메시지를 처리하는 함수
      socket.on('log_message', function(msg) {
        const logItem = document.createElement('li');
        logItem.textContent = msg;
        document.getElementById('log-list').appendChild(logItem);
      });
    </script>
  </body>
</html>

5. 애플리케이션 실행

이제 애플리케이션을 실행해보겠습니다. 터미널에서 다음 명령어를 실행하여 Flask 애플리케이션을 실행합니다.

$ python3 main.py

브라우저에서 http://localhost:5000/ 로 접속하면, 실시간 로깅 시스템이 동작하는 것을 확인할 수 있습니다.

결론

이번 포스트에서는 Python과 Flask 웹 프레임워크를 사용하여 실시간 로깅 시스템을 구현하는 방법에 대해 알아보았습니다. 이를 통해 개발자는 애플리케이션의 상태를 실시간으로 모니터링하고, 발생한 이벤트와 오류를 신속하게 파악할 수 있게 되었습니다. 실제로 실시간 로깅 시스템은 개발 및 운영 환경에서 매우 유용하게 사용될 수 있습니다.