Setup
이전 게시글에서도 이야기했지만 우리들은 logging에 대한 설정값을 json파일을 활용한 configuration으로 제작하였다.
이에 실제로 python editor 상에서 저장된 log data들을 불러와서 어떤 작업을 해주기 위해선 editor 상에서 해당 데이터들을 Setup해줘야한다.
setup이란 어떠한 목적을 위해서 미리 준비하거나 설정하는 작업을 의미하는데, 여기서는 logging이 이뤄지기 위해서 미리 설정해주는 작업을 의미한다.
위 Template에서는 setup_logging을 통해서 다음을 구현해보고자 한다.
Json 파일로 작성된 Configuration을 python 객체로 Decoding해주는 작업 + handler의 저장위치를 절대주소로 변경
코드 정리
앞서 정의했던 함수 read_json을 활용하여 json 파일로 저장된 logging_config.json 파일을 dict 자료형으로 Decoding하여
config 라는 변수에 할당하였다. 이후 handler 내부 filename에서 지정한 filename의 dir주소인 save_dir argument를 활용하여 절대주소를 재할당해주는 코드이다. 이를 통해 logging 하기위해 Setup해주는 logger.py라는 파일을 살펴보았다.
import logging
import logging.config
from pathlib import Path
from utils import read_json
def setup_logging(save_dir, log_config='logger/logger_config.json', default_level=logging.INFO):
"""
logging_Configuration.json을 Setup하는 작업
__________________________________________________________________________
* config 변수에 저장된 logging_configuration을 할당한다
* 추가적으로 save_dir 주소를 활용하여 log가 저장된 장소를 handler 내에서 절대주소로 변경한다.
"""
log_config = Path(log_config)
if log_config.is_file():
config = read_json(log_config)
# handler 주소 변경하는 코드 (이하)
for _, handler in config['handlers'].items():
if 'filename' in handler:
handler['filename'] = str(save_dir / handler['filename'])
logging.config.dictConfig(config)
else:
print("Warning: logging configuration file is not found in {}.".format(log_config))
logging.basicConfig(level=default_level)
p.s 여기서 pathlib.Path의 is_file()이라는 메서드를 활용했는데, 해당 메서드는 상위 객체인 Path이 file인지 아닌지를 확인하여 Bool type으로 return하는 메서드이다. 비슷한 기능을 하는 메서드로는 is_dir()이 있고 이 메서드는 해당 Path이 directory인지 아닌지를 확인하여 Bool type으로 return하는 메서드이다. 자세한 내용은 아래 reference를 참고하면 좋을 것 같다.
Referecne
https://aigong.tistory.com/193#2)_Path.is_dir(),_Path.is_file()
[Python]pathlib 살펴보기
[Python]pathlib 살펴보기 목차 개요 파이썬 3.4 이상에 한하여 내장함수로 추가된 함수로 os 모듈보다 간편하게 사용할 수 있다는 장점때문에 이번에 설명드리고자 합니다. 해당 내장함수로 파일 위
aigong.tistory.com
인스타 주소 🎗
'MLOps > Template' 카테고리의 다른 글
[pytorch] Template - CLI options (argparse) [5편] (0) | 2023.07.11 |
---|---|
[pytorch] Template - logger 구현 [3편] (0) | 2023.07.10 |
[pytorch] Template - json(read, write) 구현 [2편] (0) | 2023.07.10 |
[pytorch] Template - 패키지 버전관리 [1편] (0) | 2023.07.09 |
[pytorch] Template 뜯어보기 - [시작] (0) | 2023.07.09 |