유용한 기억
python logger사용하기
JihyunLee
2021. 11. 12. 16:06
python 에서 log를 만드는 (경험상) 가장 편리한 방법을 정리해 보았다.
왜 print()를 안쓰는가?
- print도 간단하고 좋은 방법이지만, 따로 관리하기 어렵고, 지저분하고.. 언제 남겨진 log인지 알아보기 힘든 단점이 있다!
logger를 쓰면 좋은점?
logger를사용하면 하나의 폴더안에 있는 다양한 모듈(main.py, util.py, dataset.py 등등..) 에서 하나의 logger를 사용할 수 있다.
큰 프로그램으 관리하기 쉬워진다 등등.. 여러 장점이 있다
사용방법
일단 폴더안에 아래 코드를 만든다.
log_conf.py
#/temp/log_conf.py
import logging
def init_logger():
mylogger = logging.getLogger("my")
mylogger.setLevel(logging.INFO)
file_handler = logging.FileHandler('my.log')
mylogger.addHandler(file_handler)
그리고 logger를 사용하고 싶은 폴더에다가
#/temp/main.py
from log_conf import init_logger
init_logger()
mylogger = logging.getLogger("my")
if __name__ == '__main__':
mylogger.info("this is file 1")
example()
를 추가하고, main.py를 실행해 보면 my.log에
this is file 1
이 출력되게 된다.
여러 파일에서 사용하기
여러 파일에서 사용하려면 일단 예시로 파일을 하나 만들어 준뒤
#/temp/ex2
import logging
mylogger = logging.getLogger("my")
def example():
mylogger.info("This is file 2")
main파일에서 ex2파일을 사용하도록 수정해주고
from log_conf import init_logger
import logging
from ex2 import example
init_logger()
mylogger = logging.getLogger("my")
if __name__ == '__main__':
mylogger.info("this is file 1")
example()
main.py를 실행해 보면
이렇게 서로 다른 파일이라도 로그가 잘 합쳐져서 나온다.
formatter를 지정하면 아래처럼 좀더 자세한 로그를 만들 수 있고, vscode는 .log 확장자를 가진 파일이면 보기 쉽게 색이 칠해져서 나온다!