파이썬(Python)

파이썬 코드 디버깅

leebaro 2023. 10. 29.
728x90

파이썬 코드 디버깅을 할 때에는 print를 사용하는 것보다는 아래와 같이 logging 모듈을 이용하는 것이 좋습니다.

 

print 문을 이용하면 아래와 같은 단점이 있습니다.

  1. 성능 문제: print 문은 I/O 작업이므로 성능에 영향을 줄 수 있습니다.
  2. 로그 관리: print로 출력된 로그는 쉽게 관리되거나 저장되지 않습니다.
  3. 불필요한 출력: 프로덕션 환경에서 불필요한 출력은 혼란을 초래할 수 있습니다.

 

이러한 문제를 해결하기 위해, 일반적으로 로깅 모듈을 사용하여 로그를 관리합니다.

Python의 표준 라이브러리인 logging 모듈을 사용하면 됩니다.

logging 모듈을 사용하면 다음과 같은 장점이 있습니다:

  1. 로그 레벨 설정: DEBUG, INFO, WARNING, ERROR, CRITICAL 등 다양한 로그 레벨을 설정할 수 있습니다.
  2. 로그 포맷 설정: 로그 메시지의 형식을 사용자 정의할 수 있습니다.
  3. 로그 핸들러: 로그를 다양한 출력 대상 (콘솔, 파일, 네트워크 등)으로 전송할 수 있습니다.

샘플 코드는 아래와 같습니다.

import logging

# 로깅 설정: 로그 레벨, 포맷, 출력 대상 등을 설정
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')

def sample_function(num):
    logging.debug("Function started with num: %s", num)
    if num < 5:
        logging.warning("The number is less than 5")
    elif num == 5:
        logging.info("The number is 5")
    else:
        logging.error("The number is greater than 5")
    logging.debug("Function ended")

# 샘플 함수 호출
sample_function(3)
sample_function(5)
sample_function(7)
STDOUT/STDERR
2023-10-29 01:59:43,455 - DEBUG - Function started with num: 3
2023-10-29 01:59:43,458 - WARNING - The number is less than 5
2023-10-29 01:59:43,459 - DEBUG - Function ended
2023-10-29 01:59:43,460 - DEBUG - Function started with num: 5
2023-10-29 01:59:43,461 - INFO - The number is 5
2023-10-29 01:59:43,462 - DEBUG - Function ended
2023-10-29 01:59:43,463 - DEBUG - Function started with num: 7
2023-10-29 01:59:43,464 - ERROR - The number is greater than 5
2023-10-29 01:59:43,465 - DEBUG - Function ended

 

728x90