오늘은 파이썬에서 로깅에 대해서 배웠다.
프로그램이 실행되는 동안 일어나는 정보를 기록하는 것.
유저의 접근, Exception 발생, 특정함수의 사용 등을 기록한다.
print로 console에 출력하기만 하면 나중에 분석시 활용이 불가능하다.
개발 레벨별로(개발 or 운영) 로그 수준을 차별화해서 남길 필요가 있다.
로그 기록을 관리하고 제어하는 클래스와 함수를 제공하는 모듈
로그 레벨
DEBUG : 디버깅을 위한 정보. 개발 단계에서 필요
INFO : 일반적인 정보 메시지. 처리 진행 정보를 알려줌
WARNING : 경고 메시지. 의도치않은 문제의 가능성이나 예외적인 상황
ERROR : 오류 메시지. 예외가 발생했지만 프로그램 계속 실행 가능
CRITICAL : 심각한 오류 메시지. 프로그램이 중단될 수 있음
기본 사용법
import logging
# 로그 레벨, 파일 핸들러와 포맷 설정 추가
logging.basicConfig(filename='app.log', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
# 로그 메시지 출력
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message')
logging.error('error message')
logging.critical('critical message')
formatter =logging.Formatter('%(asctime)s %(levelname)s %(process)d %(message)s')
# log config file
logging.config.fileConfig('logging.conf')
logger = logging.getLogger()
configparser 모듈은 설정 파일을 파싱하여 파이썬에서 사용할 수 있는 형식으로 로드하는 기능을 제공한다.
프로그램의 실행 설정을 file에 저장한다.
Section, Key, Value 값의 형태로 설정된 설정파일을 사용한다.
설정파이릉 Dict Type으로 호출 후 사용한다.
사용 예시
import configparser
config = configparser.ConfigParser()
config.sections()
config.read('example.cfg')
config.sections()
# 섹션과 옵션으로 값 읽기
server = config.get('database', 'server')
port = config.getint('database', 'port') # 정수형으로 읽기
dbname = config.get('database', 'dbname')
for key in config['SecfionOne']:
print(key)
config['SecfionOne']['status']
console 창에서 프로그램 실행시 setting 정보를 저장한다.
거의 모든 console 기반 파이썬 프로그램 기본으로 제공
기본 사용법
import argparse
# ArgumentParser 객체 생성
parser = argparse.ArgumentParser(description='Process some integers.')
# 명령행 인자 추가
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
# 명령행 인자 파싱
args = parser.parse_args()
# 결과 출력
print(args.accumulate(args.integers))