본문 바로가기

개발/Python

부스트캠프 AI Tech 3기 Pre-Course [4]-3 Logging Handling / 로그, 로깅

Logging

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

  • 실행시점에 남겨야 하는 기록
    유저를 분석하기 위함
  • 개발시점에 남겨야 하는 기록
    에러를 잡기 위해서

print로 남기는 것도 가능하다. 파일이나 DB에 남길 수 있다. 

모듈별로, 레벨별로 기록을 남길 필요도 있다.

 

import logging

logging.debug("디버깅")
logging.info("정보를 주는 것")
logging.warning("뭔가 잘못되었으니 조심해라(exception)")
logging.error("에러")
logging.critical("프로그램이 완전히 종료되었을 때")

위처럼 프로그램 진행 상황에 따라 다른 level의 log를 출력한다

logging level : debug(개발시점)>info(운영시점)>warning(운영시점)>error(사용자)>critical(사용자)

 

import logging

if __name__=='__main__':
    logger = logging.getLogger("main")
    logging.basicConfig(level=logging.INFO)
    # logger.setLevel(logging.ERROR)

    logger.debug("디버깅")
    logger.info("정보를 주는 것")
    logger.warning("뭔가 잘못되었으니 조심해라(exception)")
    logger.error("에러")
    logger.critical("프로그램이 완전히 종료되었을 때")

파이썬의 warning level은 setting하지 않으면 기본적으로 warning부터 나오도록 되어 있다.

근데 basicConfig를 통해 이 기본 설정을 바꾸어 주고,

setLevel을 사용해서 레벨을 세팅할 수 있다.

 

위의 코드에서 주석을 풀면 밑의 두 줄만 출력될 것이다.

 

파일로 저장하기

import logging

if __name__=='__main__':
    logger = logging.getLogger("main")

    logging.basicConfig(level=logging.INFO)
    logger.setLevel(logging.ERROR)

    steam_handler=logging.FileHandler("my.log", mode="a", encoding='utf8')
    logger.addHandler(steam_handler)

    logger.debug("디버깅")
    logger.info("정보를 주는 것")
    logger.warning("뭔가 잘못되었으니 조심해라(exception)")
    logger.error("에러")
    logger.critical("프로그램이 완전히 종료되었을 때")

file handler를 사용하면 된다.

이 코드를 실행하면

이렇게 기록된다.

 

사전에 세팅을 하는 방법

로깅은 사전에 세팅해줘야되는 것이 많다. 로그파일, 레벨 등등

configparser

파일에 설정해서 알림

dictionary 형태로 section, key, value 값의 형태로 설정된 파일을 사용한다.

example.cfg

 

import configparser
config=configparser.ConfigParser()
config.sections()

config.read('example.cfg') #설정 파일을 읽어온다.

for key in config['SectionOne']:
    value=config['SectionOne'][key]
    print({}:{}".format(key,value))

 

argparser

실행시점에 shell에 알림
console창에서 프로그램 실행시 setting정보를 저장한다.

일반적으로 많이 사용한다. 

 

command에서 --v 처럼 옵션에 따라 이벤트를 일어나게 하는 것이다.(command line option)

import argparse

parser=argparse.ArgumentParser(description='sum two integers.')

parser.add_argument('-a', "--a_value", dest="a", help ="A integers", type=int) #argument 종류 추가
parser.add_argument('-b', "--b_value", dest="b", help ="B integers", type=int) #짧은 이름 / 긴 이름 / 표시명 / help 설명 / argument type

args=parser.parse_args()
print(args)
print(args.a)
print(args.b)
print(args.a+args.b)

파이참에서 실행하니까 입력할 수가 없어서 에러가 뜬다.

콘솔에서 해야할 것 같다.

 

 

 

 

Reference : 부스트캠프 AI Tech 3기 Pre-Course - Module and Project