파이썬을 쓰다 보면 로그 모듈을 통해 로그를 핸들링 해야 할 경우가 있다. 프린트 함수 사용 수준을 넘어서 로그의 출력 레벨과 출력 양식등을 설정하며 로그를 찍어야 하는 경우이다.
자바에는 log4j라는 유명한 라이브러리가 있다. 파이썬의 경우에는 기본적으로 제공되는 logger 모듈을 보편적으로 사용한다. ‘로그’를 잘 사용하게 되면 그만큼 개발에 도움을 많이 받는다. 특히나 프로젝트의 규모가 커질수록, ‘로그’에 대한 레벨 설정과 관리가 중요하다.
모듈이 커지면 ‘파일’도 많아진다. 해당 파일들이 생산하는 ‘로그’에 대한 ‘일관적’인 관리가 필요해진다. 또는 기존의 모듈 안에 들어가 있는 ‘로그’를 설정을 통해 꺼내서’ 써야 하는 경우도 있다.
logger = logging.getLogger(__name__)
Python
복사
보통은 모듈 내에 로거가 파일 안에서 위와 같은 형식으로 선언되어 있다. __name__에는 일반적으로 패키지나 모듈 이름이 들어간다.
로그 사용시 파일마다 저렇게 해놓고 로그를 기재하면, 같은 ‘패키지’ 또는 ‘모듈’의 이름과 관련해서는 동일한 설정대로 출력이 가능하다. 동일한 설정이라는 것은 로그 포멧, 레벨, 핸들(화면으로 찍을지, 파일로 저장할지) 등을 말한다.
import logging
log_format = '%(asctime)s [%(filename)s:%(lineno)s|%(levelname)s] %(funcName)s(): %(message)s'
logging.basicConfig(format=log_format, level=logging.INFO)
logger = logging.getLogger('name_of_module')
Python
복사
실행하는 최초 시작지점의 파일에서 basicConfig에 로그 포맷과 로그 레벨등 ‘필요한’ 설정을 한 뒤, getLogger를 통해서 로그를 찍고자 하는 모듈의 ‘이름’을 넣어서 해당 ‘로거’를 호출하면, 설정된 컨피그 대로 모듈의 logger가 작동한다. 이를 통해 원하는 양식이나 또는 보고 싶은 레벨 수준을 조정할 수 있다.
모듈의 로그를 제어할 때는 반드시 모듈을 import 하기 전에 로그 설정을 먼저 해야 한다. 모듈을 import 한 뒤에는 위와 같이 설정을 하더라도 제어가 되지 않는다.
logger를 처음 접할 때는 어느정도 개념과 이해가 필요한 점이 있다. 모든 소프트웨어가 그렇지만, 처음 개념 잡을때는 낯설지만 개념을 잡고나면 어렵지 않다. 파이썬 매뉴얼에 logger에 대한 개념과 사용법이 설명이 잘 되 있으니 해당 글을 참고하며 익히고 사용해보자.