240628 TIL #437 Logging

김춘복·2024년 6월 27일
0

TIL : Today I Learned

목록 보기
437/571

Today I Learned

오늘은 파이썬에서 로깅에 대해서 배웠다.


Logging

프로그램이 실행되는 동안 일어나는 정보를 기록하는 것.

  • 유저의 접근, Exception 발생, 특정함수의 사용 등을 기록한다.

  • print로 console에 출력하기만 하면 나중에 분석시 활용이 불가능하다.
    개발 레벨별로(개발 or 운영) 로그 수준을 차별화해서 남길 필요가 있다.

Python의 logging 모듈

로그 기록을 관리하고 제어하는 클래스와 함수를 제공하는 모듈

  • 로그 레벨
    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')
  • 로그 결과값의 format을 지정해줄 수 있다.
formatter =logging.Formatter('%(asctime)s %(levelname)s %(process)d %(message)s')

# log config file
logging.config.fileConfig('logging.conf')
logger = logging.getLogger()

설정

configparser

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']

argparser

  • 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))
profile
Backend Dev / Data Engineer

0개의 댓글