[파이썬] argparse와 로깅 설정

소개

Python에서는 argparse와 로깅(logging) 모듈을 사용하여 명령행 인수를 처리하고 로그를 남길 수 있습니다. argparse는 명령행 인수를 구문 분석하고 사용자가 입력한 값을 쉽게 처리할 수 있도록 도와줍니다. 로깅 모듈은 애플리케이션의 실행 과정을 로그 파일에 기록하여 디버깅 및 모니터링에 도움을 줍니다.

이 블로그 포스트에서는 argparse와 로깅 설정에 대해 알아보고, 실제 예제 코드를 통해 사용 방법을 살펴보겠습니다.

argparse 사용하기

argparse는 argparse 모듈을 import하여 사용할 수 있습니다. 다음은 간단한 예제 코드입니다.

import argparse

# argparse 객체 생성
parser = argparse.ArgumentParser(description='Calculate the sum of two numbers')

# 명령행 인수 추가
parser.add_argument('num1', type=int, help='first number')
parser.add_argument('num2', type=int, help='second number')

# 인수 구문 분석 실행
args = parser.parse_args()

# 인수 값에 접근할 수 있습니다.
result = args.num1 + args.num2

# 결과 출력
print(f'The sum of {args.num1} and {args.num2} is {result}')

위 코드를 실행하기 위해 터미널에서 다음과 같이 입력할 수 있습니다.

python my_program.py 3 4

이렇게 하면 my_program.py 스크립트가 실행되고, 3과 4의 합계인 7이 출력됩니다.

로깅 설정하기

로깅은 logging 모듈을 import하여 사용할 수 있습니다. 기본적으로 Python에는 미리 정의된 로깅 레벨이 있으며, 각각의 레벨에는 해당하는 정보의 중요도가 있습니다.

다음은 간단한 예제 코드입니다.

import logging

# 로깅 설정
logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s [%(levelname)s] %(message)s',
                    handlers=[
                        logging.FileHandler('my.log'),
                        logging.StreamHandler()
                    ])

# 로그 작성
logging.info('Information message')
logging.warning('Warning message')
logging.error('Error message')

이 코드를 실행하면 my.log 파일과 터미널에 로그가 출력됩니다. 위 예제에서는 로그 레벨을 INFO로 지정하였으므로 info, warning, error 레벨의 로그가 모두 기록됩니다.

로깅 포맷은 format 매개변수를 통해 지정하며, 로그 메시지에는 날짜 및 시간, 로그 레벨 등의 정보를 포함할 수 있습니다.

argparse와 로깅 설정을 함께 사용하기

argparse와 로깅 설정을 함께 사용하면 명령행 인수를 조작하면서 실행 중인 애플리케이션의 동작을 상세하게 추적할 수 있습니다. 예제 코드를 통해 이를 확인해보겠습니다.

import argparse
import logging

# argparse 객체 생성
parser = argparse.ArgumentParser(description='Calculate the sum of two numbers')

# 명령행 인수 추가
parser.add_argument('num1', type=int, help='first number')
parser.add_argument('num2', type=int, help='second number')

# 인수 구문 분석 실행
args = parser.parse_args()

# 로깅 설정
logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s [%(levelname)s] %(message)s',
                    handlers=[
                        logging.FileHandler('my.log'),
                        logging.StreamHandler()
                    ])

# 인수 값에 접근하여 계산하고 로그 작성
result = args.num1 + args.num2
logging.info(f'The sum of {args.num1} and {args.num2} is {result}')

위 코드를 실행하면 입력된 명령행 인수와 계산 결과가 로그 파일과 터미널에 출력됩니다.

결론

argparse와 로깅 설정은 Python에서 매우 유용한 기능입니다. argparse를 사용하여 명령행 인수를 처리하고, 로깅을 설정하여 실행 중인 애플리케이션의 동작을 추적할 수 있습니다. 이를 통해 애플리케이션의 유연성과 디버깅/모니터링 기능을 향상시킬 수 있습니다.

이 블로그 포스트에서는 argparse와 로깅 설정의 기본 사용 방법과 함께 예제 코드를 제공했습니다. 이를 참고하여 실제 프로젝트에서 효과적으로 활용해보세요.