Hello Computer Vision

[python] logging.getLogger(__name__) 선언 이유 본문

딥러닝/파이썬

[python] logging.getLogger(__name__) 선언 이유

지웅쓰 2023. 12. 24. 20:20

github 오픈된 코드들을 보면은 logging이란 모듈이 상당히 많이 쓰이는 걸 알 수 있다. 이것에 대해 알아보자면 print대신 사용할 수 있으며 에러와 관련하여 다양한 기능들이 있다.

 

우선 기본적인 이해가 있다하고 내가 본 코드에서는

logger = logging.getLogger(__name__)

이렇게 선언하고 logging. ~~ 이렇게 선언하는게 아니라 logger로 계속 선언되었다. 이 부분은 설명보다는 결과로 비교하는게 제일 빠를 거 같다.

### test.py 파일에 적혀있는 코드

def run_module():
    logger = logging.getLogger(__name__)
    logger.info('test파일임다')

test.py 파일에는 위와같은 함수에 logger를 따로 선언해주었다.

### test2.py 파일

import test
import logging
logging.basicConfig(level=logging.DEBUG)
test.run_module()

if __name__ == '__main__':
    logging.info('test 2 임')
print(__name__)

test2.py 파일에는 위와 같은 코드들이 작성되어있다. 잠깐 비교해보면 test 파일에는 logger를 따로 선언해주었고 test2 파일에는 그대로 logging으로 사용한 것을 알 수 있다. 결과 코드는 다음과 같다.

INFO:test:test파일임다
INFO:root:test 2 임
__main__

이렇게 logger를 선언해준다음에 해당 파일을 수행한다면 어디서 나온 메세지인지 알 수 있다. 이번에는 test파일에서 logger를 따로 선언하지않고 logging으로 출력해보자.

__main__
INFO:root:test파일임다
INFO:root:test 2 임

이렇게 logging으로 출력해보면 어디서 나온 메세지인지 잘 알 수 없다는 단점이 있다. 그러니 각 파일에 logger로 선언한다면 조금 더 가독성있게 결과를 확인할 수 있다.