다음과 같은 구조의 작은 파이썬 프로젝트가 있습니다-
Project
-- pkg01
-- test01.py
-- pkg02
-- test02.py
-- logging.conf
기본 로깅 모듈을 사용하여 stdout 및 로그 파일에 메시지를 인쇄하려고합니다. 로깅 모듈을 사용하려면 약간의 초기화가 필요합니다.
import logging.config
logging.config.fileConfig('logging.conf')
logger = logging.getLogger('pyApp')
logger.info('testing')
현재 메시지 로깅을 시작하기 전에 모든 모듈에서이 초기화를 수행합니다. 이 초기화를 한 곳에서 한 번만 수행하여 프로젝트 전체에 로깅하여 동일한 설정을 재사용 할 수 있습니까?
package/__init__.py
. 그것은 일반적으로 if __name__ == '__main__'
코드 를 넣는 곳이 아닙니다 . 또한 prost의 예제는 가져 오기 할 때 무조건 구성 코드를 호출하는 것처럼 보이지만 나에게는 맞지 않습니다. 일반적으로 로깅 구성 코드는 한 곳에서 수행해야하며 __main__을 가져올 때를 제외하고는 가져 오기의 부작용으로 발생하지 않아야합니다.
if __name__ == '__main__'
? (이 경우에는 명시 적으로 문제의 언급이 없습니다)
fileConfig
모든 모듈에if __name__ == '__main__'
논리가 없는 한 로깅을 수행하는 모든 모듈 을 호출 할 필요는 없습니다 . 패키지가 라이브러리라면 prost의 대답은 좋은 습관이 아닙니다.하지만 당신을 위해 작동 할 수도 있습니다-라이브러리 패키지에 로깅을 구성하지 않아야합니다NullHandler
.