본문 바로가기
PYTHON/고급학습

고급 3편] 실시간 로그 감시로 자동 작업 실행하기.zip

by Kim.Sung 2025. 5. 17.

자동화의 핵심은 '조건이 되면 알아서 동작하는 것'입니다.  
이번 편에서는 로그 파일을 실시간으로 감시하고,  
특정 키워드가 포함되면 자동으로 반응하도록 만드는  
파이썬 스크립트를 구성해봅니다.


예를 들어, 아래와 같은 상황에 활용할 수 있습니다:

- 서버 로그에서 "ERROR" 발생 시 텔레그램으로 알림  
- 특정 프로그램이 종료되었는지 로그로 확인 후 재시작  
- 디버깅 중 실시간 출력 확인과 동시에 자동 정리 작업 실행  
- 텍스트 기반 시스템 로그 감시 후 조건 충족 시 자동 실행

👁‍🗨 사용할 기술: `watchdog` 패키지

`watchdog`은 폴더/파일 변화를 실시간으로 감시할 수 있는 Python 라이브러리입니다.

📦 설치 방법 (터미널)

```
pip install watchdog
```

📁 예시 시나리오

- 감시 대상: `log.txt`  
- 키워드: "CRITICAL", "RESTART"  
- 감지 시: `restart_program()` 함수 실행

🐍 파이썬 코드 예제

```python
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

LOG_FILE = 'log.txt'
KEYWORDS = ['CRITICAL', 'RESTART']

def restart_program():
    print("🔁 재시작 실행됨")

class LogHandler(FileSystemEventHandler):
    def on_modified(self, event):
        if event.src_path.endswith(LOG_FILE):
            with open(LOG_FILE, 'r', encoding='utf-8') as f:
                lines = f.readlines()[-10:]  # 최근 10줄만 확인
                for line in lines:
                    if any(keyword in line for keyword in KEYWORDS):
                        restart_program()
                        break

if __name__ == "__main__":
    observer = Observer()
    handler = LogHandler()
    observer.schedule(handler, path='.', recursive=False)
    observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()
```

⚙️ 작동 방식 설명

- 현재 디렉토리의 `log.txt`를 실시간 감시  
- 파일이 수정되면 최근 몇 줄을 읽어 키워드를 찾음  
- 키워드가 발견되면 즉시 지정된 함수 실행

📌 활용 예시

- 시스템 자동 복구  
- 실시간 감시용 텔레그램 봇 연결  
- 자가 점검 자동화 루틴 구성  
- 디버깅 중 자동 정리 및 정지 루틴

이 구조를 잘 익혀두면  
크론탭이나 작업 스케줄러보다 더 유연한 자동화 흐름을 만들 수 있습니다.