본문 바로가기

카테고리 없음

Python 로깅(logging) 모듈 사용하여 간단히 파일에 프로그램 실행 로그 혹은 딥러닝 로그 남기는 방법!

 본 게시글은 필자의 개인 경험을 토대로 작성된 것으로, 잘못된 정보를 포함하고 있을 수 있습니다. ※

 

  파이썬을 이용하여 개발하는 사람 혹은 딥러닝을 연구하는 사람에게 로그(log)를 기록하는 작업은 굉장히 중요하다. 딥러닝 모델을 활용하여 실험을 돌린 뒤에, 그 결과를 나중에 확인하기 위한 목적으로 다양한 도구를 사용할 수 있다. 사실 간단히 print() 함수를 사용해 학습이 정상적으로 되고 있는지 확인할 수 있으며, 혹은 TensorBoard를 이용하는 것도 가능할 것이다.

 

  하지만 조금 더 가벼운 내용을 가볍게 로깅하고 싶을 땐 어떻게 할까?


  단순히 손실(loss) 값이 하락하는지의 여부 및 정확도(accuracy) 값의 변화 정도만 추적하고 텍스트 파일 형태로 기록하고 싶다면, 직접 logging 모듈을 사용해 볼 수 있을 것이다. Python 3에서는 기본적으로 logging 모듈을 사용할 수 있다. 특히 텍스트 파일로 단순히 학습 진행 상황을 정리하고자 할 때  사용해 볼 수 있다.

 

import logging

logger = logging.getLogger() # logger 객체 생성
logger.setLevel(logging.INFO) # logger 레벨(level) 설정: "INFO" 이상의 심각도를 가지는 이벤트에 대하여 기록

log_path = "my_log.log" # 저장할 log 파일 이름

handler = logging.FileHandler(log_path, 'a') # 파일로 저장하기 위해 핸들러(handler) 객체 생성 
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # 로그가 기록될 형태(format) 설정
handler.setFormatter(formatter) # 핸들러(handler)에 format 적용

logger.addHandler(handler) # logger 객체에 핸들러 적용

 

이제 다음과 같이 사용하면, 마치 print() 함수를 호출하듯이 로깅(logging)을 진행할 수 있게 된다. 필자는 가볍게 logger.info() 함수를 이용하여 특정한 텍스트를 로그로 남겨 보았다.

message = "This is a log message."
print(message)
logger.info(message)

 

  실제로 다음과 같이 실행 결과를 확인할 수 있다. 구체적으로, 바로 다음과 같은 형태로 성공적으로 로깅이 수행되는 것을 알 수 있다. 

 

 

  실제로 위와 같은 코드를 실행했을 때, 다음과 같이 "my_log.log" 파일에 로그 메시지가 기록된 것을 확인할 수 있다. (파일 출력)