자동화 실행 로그 만들기: 화면 출력과 파일 기록 분리
실행 로그는 발생 시각·단계·결과를 구조적으로 남기고, 화면 표시와 보관용 로그를 분리하는 편이 좋습니다.
어떤 상황에서 적용하나요?
아래 예제는 logging으로 메모리 스트림에 기록해 로그 문구를 검증합니다. 실제 GUI를 띄우지 않습니다. GUI에 표시할 때는 메인 스레드에서 스트림의 메시지나 큐 이벤트를 읽어 위젯에 추가하세요.
검증 범위: 아래 코드는 외부 서비스에 요청하지 않는 로컬 예제입니다. 실제 서비스 연결은 별도로 검증해야 합니다.
최소 예제로 동작 확인하기
import io
import logging
stream = io.StringIO()
handler = logging.StreamHandler(stream)
handler.setFormatter(logging.Formatter("%(levelname)s %(message)s"))
logger = logging.getLogger("work-demo")
logger.setLevel(logging.INFO)
logger.addHandler(handler)
logger.propagate = False
try:
logger.info("job=%s result=%s", "daily", "completed")
text = stream.getvalue()
assert "job=daily result=completed" in text
print(text.strip())
finally:
logger.removeHandler(handler)
handler.close()
결과는 어떻게 확인하나요?
INFO 수준의 작업 결과 한 줄이 출력됩니다. 같은 로거에 핸들러를 반복 추가하면 메시지가 여러 번 표시될 수 있으므로 생성과 종료 수명을 관리해야 합니다.
실제 업무에 적용할 때 확인할 점
긴 작업의 모든 행을 화면에 계속 쌓으면 UI가 느려질 수 있습니다. 표시 행 수와 로그 보관 기간을 제한하세요. 인증 헤더와 원문 개인정보를 기록하지 말고 사용자에게 보여 줄 오류 문구와 상세 추적 로그를 구분합니다.
공식 자료와 다음 단계
관련 공식 문서에서 사용하는 버전의 기능과 제한을 확인하세요.
학습 경로: 업무 자동화 가이드 · 입력 오류 처리
작성: 로그 · 2026-10-17 수정: 확인되지 않은 경험담과 성능 보장 표현을 제거하고 예제·적용 조건·공식 근거를 보완했습니다.
댓글
댓글 쓰기