Python 에서 Log 남기는 팁

원문 : http://victorlin.me/posts/2012/08/good-logging-practice-in-python/

 

Print 대신 표준 logging모듈 사용하기

import logging

로깅 레벨의 사용.

너무 많은 로그는 나중에 분석 할때 방해되므로 다음과 같이 사용.
debug : 디버깅시에만 임시적으로 사용 후 끝나면 삭제.
info : Request Handling 이나 서버 상태 변경 시 사용.
warn : 에러는 아니지만 중요한 정보이므로 남기고 싶을 때, ex) 유저가 잘못된 비번으로 로그인, 연결이 느릴 때.
error : 예외가 발생하거나 IO나 네트워크 작업 실패 시.
critical : 아주 나쁜 상황이 발생할 때 가끔 사용.

__name__ 키워드를 사용해서 로거 이름을 지정.

해당 코드가 삽입된 모듈명을 로그에 찍을 수 있다.

logger = logging.getLogger(__name__)
logger.info('Start reading database')

Traceback을 찍자.

exc_info=True 사용시 콜스택이 로그에 남는다.

logger.error('Failed to open file', exc_info=True)

Logger를 모듈레벨에서 획득하지 말고 필요할때 그 함수나 클래스 안에서 획득 후 사용하자.

getLogger는 비용이 크지 않다.
해당 모듈이 main모듈이 아닐 때 전역적으로 로거를 미리 획득시 Logging config파일이 로드되기 이전일 수 있다.
혹은 disable_existing_loggers 옵션 사용.

Logging Config 파일 타입으로 JSON이나 YAML을 사용할 수 있다.

logger config를 JSON이나 YAML형식으로 저장해놓고 dictConfig함수를 이용해 dict 형식으로 읽어올 수 있음.

RotatingFileHandler를 사용시 로그를 여러 개 파일에 나눠 쓸 수 있다.

RotatingFileHandler를 사용하면 일정사이즈 단위로 파일을 여러개에 자동으로 나눠 써준다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

This site uses Akismet to reduce spam. Learn how your comment data is processed.