IT/python

[파이썬] 배치 로그 실시간으로 남기는 방법

generator 2025. 4. 2. 15:50

파이썬으로 배치를 만들고 나고 실행하는 동안 로그파일에 아무  내용도 남지 않아서 해당글을 보고 계신다면 아래에 내용을 참고 해주세요

1. 파이썬 코드 수정

  • 버퍼링 비활성화: print 호출 시 flush=True 추가.
    import time
    print("Start", flush=True)
    time.sleep(2)
    print("Middle", flush=True)
    time.sleep(2)
    print("End", flush=True)
  • 효과: 출력이 즉시 파일에 기록됨.

2. 환경 변수 사용

  • 파이썬 실행 시 -u 플래그 추가 (unbuffered 모드).
    bash
    CollapseWrapCopy
    python -u $BATCH/$PROG/$PROG.py > $BATCH/$PROG/output.log 2>&1
  • 효과: stdout과 stderr가 버퍼링 없이 즉시 출력.

3. 셸 명령어 수정

  • stdbuf 명령어로 버퍼링 제어 (Linux/Unix 환경).
    bash
    CollapseWrapCopy
    python -oL $PY3 $BATCH/$PROG/$PROG.py > $BATCH/$PROG/output.log 2>&1
    • -oL: 줄 단위 버퍼링(line buffering) 활성화.
  • 효과: \n마다 로그가 파일에 기록.