자동화 스크립트와 크론 작업을 위해 설계된 가볍고 외부 의존성이 없는 Python 상태 리포터입니다. 콘솔, Discord, Telegram에 실행 진행 상황, 단계, 결과를 쉽게 리포팅하세요.
#주요 기능
- 외부 의존성 없음: Python 표준 라이브러리만 사용(
urllib) - 멀티 채널: 콘솔, Discord(Webhooks), Telegram(Bot API)에 동시 리포팅
- 단계 추적: 스크립트의 현재 위치 정확히 모니터링(예:
SETUP→PROCESSING→COMPLETE) - 오류 투명성: 실패 시 자동으로 traceback 첨부
- 실행 시간 추적: 실행 시간 자동 계산 및 리포팅
- CI/CD 및 Cron 친화적: 로그를 위한 표준화된 JSON 출력으로 다른 도구에서 파싱 용이
#설치
pip install script-reporter
#빠른 시작
#간단한 사용 (자동 감지)
채널 활성화를 위해 환경 변수 설정:
REPORTER_DISCORD_WEBHOOK: Discord 웹후크 URLREPORTER_TELEGRAM_TOKEN&REPORTER_TELEGRAM_CHAT_ID: 텔레그램 봇 토큰 및 채팅 ID
from script_reporter import ScriptReporter
import traceback
# 제목으로 초기화 (환경 변수에서 Discord/Telegram 자동 감지)
sr = ScriptReporter("내 자동화 작업")
try:
# 진행 단계 추적
sr.stage("DATA_FETCH")
# ... 로직 ...
sr.stage("PROCESSING")
# ... 로직 ...
# 선택적 상세 딕셔너리와 함께 성공 리포트
sr.success({"items_processed": 100, "status": "all_good"})
except Exception:
# traceback과 함께 실패 리포트
sr.fail(traceback.format_exc())
#수동 구성
환경 변수 없이 어댑터를 명시적으로 제어:
from script_reporter import ScriptReporter, ConsoleAdapter, DiscordAdapter, TelegramAdapter
adapters = [
ConsoleAdapter(),
DiscordAdapter(webhook_url="https://discord.com/api/webhooks/..."),
TelegramAdapter(token="BOT_TOKEN", chat_id="CHAT_ID")
]
sr = ScriptReporter("수동 구성 작업", adapters=adapters)
sr.success({"msg": "Hello from code!"})
#JSON 로그 형식
ConsoleAdapter는 기계가 읽을 수 있는 JSON 라인을 출력합니다:
__RESULT__ {"title": "내 작업", "host": "server-01", "stage": "COMPLETE", "status": "SUCCESS", "duration": "1m 30s", "detail": {"processed": 5}}
#사용 사례
- Cron 작업: 예약된 작업 실행 모니터링
- CI/CD 파이프라인: 빌드 로그에서 결과 파싱
- 장기 실행 스크립트: 단계별 진행 상황 추적
- 자동화 워크플로우: 실패 시 알림 수신