본문 바로가기

Skill Sets/Python

[Python/파이썬] Python내 logging을 통한 log 파일 남기기(코드 포함)

SMALL

안녕하세요! 데코입니다!

 

오늘은 포스팅은 파이썬에서 logging 모듈을 통해

py파일에서 로그(log)를 남기는 이유를 설명하려고 합니다!

그리고

이용 방법과 간단한 코드도 첨부해서 어떻게 log를 남기는지 직접 보여드리려고 합니다!

1. 로그(log)를 남기는 이유

로그(log)를 남기는 이유는 "디버깅"을 하기 위해서입니다!


디버깅은 모든 소스 코드의 오류 또는 버그를 찾아서 수정하는 과정이라고 할 수 있어요!

 

데이터 분석 업무에서 py 파일 생성해서 실행하면 여러 가지 오류를 만날 수 있어요!

 

log를 통해 오류가 발생하는 위치도 파악하고 중요한 정보는 로그로 남겨서 결과를 비교할 수도 있습니다!

 

제가 22년 P사에서 분석 업무를 수행하면서 로그(log) 내역을 남길 때에는

 

아래와 같은 내용을 파악하기 위해 log를 남겼습니다!

1. 상태 모니터링 : py파일이 정상적으로 작동하는지 또는 문제가 발생하는 경우 log를 통해 확인하기 위해
2. 오류 관리 : log를 통해 발생한 위치 파악하고 관리하기 위해
3. 정보 기록 : py파일의 실행 과정에서 중요한 정보를 log에 기록하여 확인하기 위해
4. 소요 시간 : 위치에 따라 수행에 거리는 시간을 확인하기 위해

 

log를 남기지 않는다면 py파일이 도중에 멈춘 경우에도 어디에 문제가 발생해서 멈췄는지 알 수 없어요!

 

왜 log 파일을 남기는지 그 이유에 대하여 이해가 가셨나요?

 

바로 이용방법에 대해서 설명할게요!

 

2. 이용 방법

이용 방법을 3단계로 나타내었어요!

 

함수 하나하나 설명하기에는 너무 복잡하니까 간단하게 base 코드를 설명해 드릴게요!

 

혹시나 더 자세한 내용이 궁금하시면 logging document 링크를 첨부해 둘게요!

(logging document : 링크)

(1) 모듈 임포트(import)

"import logging"를 를 통해 logging 모듈을 불러와주세요!

(2) 기본 환경 설정

logging.basicConfig() 함수를 이용해서 기본적인 로깅(logging) 환경을 설정해요!

일반적으로 level, format, handlers 등의 옵션을 설정할 수 있어요!

(3) 로깅 수행

원하는 정보를 log에 남기기 위해 

logger.debug(), logger.info(), logger.warning(), logger.error() 등을 사용해요!

 

각 설명은 아래와 같아요!

  • DEBUG: 프로그램 작동에 대한 상세한 정보를 나타내는 로그로 문제의 원인을 파악할 때 사용
  • INFO: 프로그램 작동이 예상대로 진행되고 있는지 파악하기 위해 사용
  • WARNING: 추후에 발생 가능한 문제를 나타내기 위해 사용
  • ERROR : 프로그램이 의도한 기능을 수행하지 못하고 있는 상황을 나타내기 위해 사용
  • CRITICAL : 프로그램 실행 자체가 중단될 수 있음을 나타내기 위해 사용

저는 주로 info()를 많이 이용해서 코드 중간중간 이용하는 dataframe의 shape를 많이 확인했어요!

이를 통해 DB에서 데이터를 잘 추출했는지, merge 작업이 잘 이루어졌는지 확인했습니다!

 

3. 예시 코드 

logging 모듈을 이용해서 log를 남겨보는 코드예요! 
Dataframe을 생성하고,

생성한 DataFrame을 csv로 저장하게 작성했고

DataFrame의 shape 정보와 파일 실행이 끝난 부분에 info()를 활용해서 로그를 남긴 코드입니다! 

해당 코드를 담은 log_test.py 파일을 생성하면 됩니다!

import logging
import pandas as pd

logging.basicConfig(filename="./log_file.txt", level=logging.DEBUG, 
                    format="[ %(asctime)s | %(levelname)s ] %(message)s", 
                    datefmt="%Y-%m-%d %H:%M:%S")

logger = logging.getLogger()

def create_df():
    df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6]})
    df.to_csv('./df_test.csv', index=False)
    logger.info("생성된 DataFrame의 shape : {}".format(df.shape))
    return df

logger.info("Dataframe 생성 완료")

log_file.txt 파일 결과


이렇게 오늘은  logging 모듈을 통해 py파일에서 로그를 남기는 방법을 설명해 보았습니다!

 

무조건 log파일을 남겨야 한다! 는 아니지만

실행하는 파일이 오래 걸리거나 오류가 발생할 수 있는 가능성이 존재해서

지속적으로 DEBUG를 확인해야 하는 하는 상황이라면

log를 남기는 것을 통해 오류가 발생하는 위치, 소요시간, 중간 결과물의 shape들을 확인하고

효율적으로 수정하여 개발이 완료하는 것을 추천드립니다!

 

우리 모두 오류 없는 코딩 해보아요!

읽어주셔서 감사합니다! :)

LIST