[python] 예외 처리에서의 로깅 작성
소프트웨어 개발 과정에서 예외 처리는 매우 중요합니다. 올바른 예외 처리를 통해 시스템의 안전성과 신뢰성을 높일 수 있습니다. 또한, 예외가 발생한 경우 이를 기록하고 분석할 수 있도록 로깅은 필수적입니다.
예외 처리
파이썬에서는 try
및 except
문을 사용하여 예외 처리를 할 수 있습니다.
try:
# 예외가 발생할 수 있는 코드
result = 10 / 0
except ZeroDivisionError as e:
# 예외가 발생했을 때의 처리
print(f"에러 발생: {e}")
로깅 작성
예외가 발생했을 때, 이를 로깅하여 추적 및 분석할 수 있습니다. 파이썬의 기본 로깅 모듈(logging
)을 사용하여 로그를 작성할 수 있습니다.
import logging
try:
result = 10 / 0
except ZeroDivisionError as e:
# 예외 발생을 로그에 기록
logging.error("에러 발생", exc_info=True)
위의 코드에서 exc_info=True
는 예외 정보를 로그에 포함할 것을 지정하는 옵션입니다.
로깅 레벨
로깅에는 여러 레벨이 있으며, 각 레벨마다 적합한 상황이 있습니다.
DEBUG
: 상세한 정보, 주로 디버깅에 사용INFO
: 정보성 메시지WARNING
: 경고성 메시지ERROR
: 일반적인 에러 메시지CRITICAL
: 심각한 에러 발생 시 사용
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug('Debug 레벨 메시지')
logging.info('Info 레벨 메시지')
logging.warning('Warning 레벨 메시지')
logging.error('Error 레벨 메시지')
logging.critical('Critical 레벨 메시지')
로그 파일 생성
로그를 파일로 기록하고 싶다면, FileHandler
를 사용하여 파일 핸들러를 추가할 수 있습니다.
import logging
# 로그를 파일로 작성할 핸들러 추가
file_handler = logging.FileHandler('example.log')
file_handler.setLevel(logging.ERROR)
# 포매터 지정
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
# 로거에 핸들러 추가
logger = logging.getLogger(__name__)
logger.addHandler(file_handler)
logger.error('이 메시지는 파일에 기록됩니다.')
위의 예제에서는 ERROR
레벨 이상의 로그만 파일에 기록되도록 설정하였습니다.
예외 처리와 로깅을 통해 소프트웨어의 안정성을 높이고, 문제 발생 시 빠르게 대응할 수 있습니다.
참고 문헌
- Python 공식 문서: Logging HOWTO