[짤막] Logging

Jeong SeongYun·2022년 7월 15일
0

짤막

목록 보기
2/16
post-thumbnail

Logging : 프로그램이 실행되는 동안 일어나는 정보를 기록하는 것입니다.

데이터를 분석함에 있어서 로그를 분석하는 행위는 핵심 그 자체라고 할 수 있습니다.
유저가 어느 경로를 통해 유입되었고, 어느 단계에서 이탈을 했는지를 알 수 있는 근간이 바로 log이기 때문입니다.

Log는 다양한 곳에 기록할 수 있습니다. Console에 그대로 출력시킬 수 있고, 파일에 남길 수도 있으며, Data Base에 차곡차곡 쌓아둘 수도 있죠.

DL을 돌리면서 중간중간 모델이 학습을 잘 하고 있는지 Epoch 별로 loss를 찍어보는 것도 logging의 한 일종입니다.

그러나 print문으로 console에 남겨두면 사라지기 때문에 우리는 tensor board나 wandb같은 툴을 이용하여 우리의 학습 정보들을 관리하고 그 정보로부터 개선점을 도출해내기도 합니다.

위와 같은 단계의 Logging Level이 존재합니다.

여기서 보통 warning은 많이 봤을 거 같은데, depreciated 예정이면 길게 빨간줄로 쫙! 뜨면서 warnings가 뜨죠?

우리는 이 warnings를 무시하기 위해 애초에 필요한 라이브러리들을 import 시킬 때

import warnings 
warnings.filterwarnings(action='ignore')

이렇게 달아두는 거구요

기본 사용법

import logging

logger = logging.getLogger('main')

logger.debug('개발자 단계 - Debug')
logger.info('개발자 단계 - Info0')
logger.warning('유저 단계 - Warning')
logger.error('유저 단계 - Error')
logger.critical('유저 단계 - Critical')

output
유저 단계 - Warning
유저 단계 - Error
유저 단계 - Critical

분명 발생 시킨 건 debug부터 critical 까지 모두 발생 시켰는데 warning부터 뜹니다.

warning부터 나오게 기본적으로 파이썬 자체에서 설정이 되어있기 때문입니다.
Debug나 Info도 나오게 하고 싶다면 아래의 설정을 추가하시면 됩니다.

logger.basicConfig(level=logging.{시작 단계})

파일에 Logging

Console에 그대로 띄우는 것도 개발자 입장에선 나쁘지 않지만 하루 종일 모니터 앞에 앉아만 있을 수는 없습니다. log만 모아둔 파일을 만들어서 거기에 추가하는 방식을 해보도록 합시다.

위의 코드에 아래의 코드를 추가해주면 됩니다.

steam_handler = logging.FileHandler('{File Name.log}' , 
									mode = 'a'
                                    encoding = 'utf8')
logger.addHandler(steam_handler)

이렇게 하면 console에 출력됨과 동시에 사전에 설정해둔 log 파일에 출련된 log를 기록하게 됩니다.

Config

사전에 미리 프로그램의 설정을 저장해둔 file을 말합니다.

요즘엔 cfg 파일 말고도 yaml이나 json과 같은 걸 많이 쓰기도 하죠? 최근에 YOLO V5 프로젝트를 하면서 yaml로 config 설정 해둔 게 기억나네요.

그거랑 비슷하다고 생각하면 됩니다.
[Section1]
Key1 : Value1
Key2 : Value2

[Section2]
key1 : Value1

이런 식으로 Section과 Dict 형태로 원하는 파일의 설정을 지정할 수 있습니다.

나중에 DL 모델링을 할 때 Dict로 처음에 파라미터들을 설정해두고 모델을 돌리죠? 그거를 위한 개념이라고 생각하시면 되겠습니다.

profile
물어보면 대답해줄 수 있는 데이터쟁이

0개의 댓글