혼자 정리
logging 기초 사용법 본문
- 표준 라이브러리 모듈
- 다음 컨셉을 포함
- 로그로 저장하고 싶은
message
- 다음 각 함수에 매칭되는 우선순위 레벨 :
debug()
,info()
,warn()
,error()
,critical()
- 모듈과 연결된
logger
객체 - 파일, 터미널, db 등에 메세지를 기록하는
Handler
- 출력물 생성하는
Formatters
- input에 따라 결정을 내리는
Filters
- 로그로 저장하고 싶은
기본적인 동작
ex)
>>> import logging
>>> logging.debug("Looks like rain")
>>> longging.info("And hail")
>>> logging.warning("Did I hear thunder?")
WARNING:root:Did I hear thunder?
>>> logging.error("Was that lightning?")
ERROR:root:Was that lightning?
>>> logging.critical("Stop fencing and get inside!")
CRITICAL:root:Stop fencing and get inside!
출력 레벨 설정
어떤 priority level 이상의 로그만 출력할 것인지 기본적으로 설정되어 있음
위 예시의 경우
WARNING
으로 셋팅된 경우basicConfig()
을 통해 디폴트 level을 변경할 수 있음>>> import logging >>> logging.basicConfig(level=loggin.DEBUG) >>> logging.debug("It's raining again") DEBUG:root:It's raining again >>> logging.info("With hail the size of hailstones") INFO:root:With hail the size of hailstones
파일에 출력하기
handler를 통해 메세지를 어디에 출력할지 설정할 수 있음
log file에 출력하려는 경우 다음과 같이 가능
>>> import logging >>> logging.basicConfig(level='DEBUG', filename='blue_ox.log') >>> logger = logging.getLogger('bunyan') >>> logger.debug("Where's my axe?") >>> logger.warning("I need my axe") >>>
blue_ox.log
에 기록됨DEBUG:bunyan:Where's my axe? WARNING:bunyan:I need my axe
cf)
FileHandler
,StreamHandler
같은 클래스의 핸들러가 있고basicConfig
에filename
인자가 들어오면FileHandler
가 파일 출력을 처리해준다.cf2) 각 레벨들은 logging클래스 안에 int 변수로 존재(ex. DEBUG=10). level인자에 logging.DEBUG같이 넘겨줄 수도 있고, 스트링인 'DEBUG'를 넘겨줘도 알아서 해석해준다.
파일 출력시 append하지 않게 하기
filemode
를'w'
로 설정
logging.basicConfig(fileName='example.log', filemode='w', level=logging.DEBUG)
출력 포맷 변경
ex)
>>> import logging
>>> fmt = '%(asctime)s %(levelname)s %(lineno)s %(message)s'
>>> logging.basicConfig(level='DEBUG', format=fmt)
>>> logger = logging.getLogger('bunyan')
>>> logger.error("Where's my other plaid shirt?")
2014-04-08 23:13:59,899 ERROR 1 Where's my ohter plaid shirt?
인코딩
basicConfig
에서encoding
인자로 설정- 설정하지 않으면
open()
에서 사용되는 디폴트 값이 사용됨
- 설정하지 않으면
logging.basicConfig(filename='example.log', encoding='utf-8', level=logging.DEBUG
'파이썬' 카테고리의 다른 글
with 구문의 효과 (0) | 2021.10.22 |
---|