스택큐힙리스트

다중 모듈에서 로깅 사용하기 본문

카테고리 없음

다중 모듈에서 로깅 사용하기

스택큐힙리스트 2023. 4. 14. 06:49
반응형

저는 다음과 같은 구조를 가진 작은 파이썬 프로젝트가 있습니다 -

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')

현재, 로그 메시지를 기록하기 전에 매 모듈에서 이 초기화를 수행합니다. 프로젝트 전체에서 동일한 설정을 사용하여 로깅하기 위해 이 초기화를 한 번만 한 곳에서 수행할 수 있을까요?

답변 1

각 모듈에서 최상의 실천 방법은 이와 같이 정의된 로거를 가져야합니다.

import logging

logger = logging.getLogger(__name__)

모듈의 상단 부근에 위치하고 있으며, 그 다음 모듈의 다른 코드에서 예를 들어 사용합니다.

logger.debug('My message with %s', 'variable data')

모듈 내에서 로깅 활동을 세분화해야하는 경우 예를 들어 사용하십시오.

loggerA = logging.getLogger(__name__ + '.A')

loggerB = logging.getLogger(__name__ + '.B')

그리고 적절한 위치에 loggerA 및 loggerB를 기록합니다.

당신의 주요 프로그램이나 프로그램에서 다음을 하십시오. 예를 들어:

def main():

your program code

if __name__ == '__main__':

import logging.config

logging.config.fileConfig('/path/to/logging.conf')

main()

또는

def main():

import logging.config

logging.config.fileConfig('/path/to/logging.conf')

# your program code

if __name__ == '__main__':

main()

다중 모듈에서 로깅을 위해 here 를 참조하고, 다른 코드에서 라이브러리 모듈로 사용될 코드의 로깅 구성을 위해 here 를 참조하십시오.

업데이트: Python 2.6 이상을 사용하는 경우 e_existing_loggers=False if you'r을 명시할 수 있으므로 fileConfig()에 전화할 때 (cs for more에서 자세한 정보를 확인하십시오). 기본값은 하위 호환성을 위해 @# for back이며, 이 경우 명시적으로 이름이 지정된 구성에서 여러분의 로거 또는 조상 로거가 아니면 fileConfig()에서 모든 기존 로거가 비활성화됩니다. 값이 ting loggers 로 설정되면 기존 로거는 그대로 유지됩니다. Python 2.7/Python 3.2 이상을 사용하는 경우 구성을 더욱 세밀하게 제어할 수 있는 API which is bette API를 고려해볼 수 있습니다.

답변 2

각 모듈에서 로깅 사용하기

프로그래밍을 할 때, 로깅은 중요하게 다뤄져야 합니다. 이는 애플리케이션에서 발생하는 이벤트를 추적하고 디버깅할 때 매우 유용합니다. 여러 모듈에서 로깅을 사용하면 코드가 효과적이고 유지보수가 용이해집니다.

위치 및 모듈에 상관없이 로그 기록을 통합하는 것은 용이하지 않습니다. 우리는 많은 모듈로 구성된 대형 애플리케이션을 다룰 때 많은 계층을 거쳐야 합니다. 이런 모듈은 각각의 로깅 설정을 가질 수 있습니다. 로그 수준, 메시지 형식, 저장 폴더 및 대상 등을 구성하는 로깅 어댑터를 공유할 수 있습니다.

두 개 이상의 로거를 사용하여 로깅을 구성하는 것이 가장 좋습니다. 해당 로그 레벨의 로거를 사용하여 대상 로그 대상을 찾거나 실제 중요성에 따라 로거의 로그 레벨을 조정 할 수 있습니다. 로깅 환경을 쉽게 구성하고 모듈에서 로거 객체를 구성하면 애플리케이션 전체에 걸쳐 로그를 통합하고 관리 할 수 있습니다.

한마디로, 각 모듈에서 로깅을 사용하여 코드를 유지보수하고 디버깅하는 것은 매우 중요합니다. 모듈 사이의 로그 기록은 통합 된 로깅 설정을 사용하여 쉽게 구성 할 수 있습니다. 이렇게하면 유지 보수 및 디버깅이 더욱 용이해지며 애플리케이션의 전체 로그를 관리 할 수 있습니다.

반응형
Comments