일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 네트워크보안
- 데이터구조
- 자바스크립트
- 컴퓨터비전
- 사이버보안
- 컴퓨터과학
- 코딩
- 2
- 딥러닝
- 인공지능
- 데이터베이스
- 웹개발
- 프로그래밍언어
- 소프트웨어공학
- 소프트웨어
- 컴퓨터공학
- I'm Sorry
- 머신러닝
- 알고리즘
- 빅데이터
- 프로그래밍
- 보안
- 네트워크
- Yes
- 버전관리
- 파이썬
- 데이터분석
- 클라우드컴퓨팅
- 데이터과학
- 자료구조
- Today
- Total
스택큐힙리스트
다중 모듈에서 로깅 사용하기 본문
저는 다음과 같은 구조를 가진 작은 파이썬 프로젝트가 있습니다 -
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
각 모듈에서 로깅 사용하기프로그래밍을 할 때, 로깅은 중요하게 다뤄져야 합니다. 이는 애플리케이션에서 발생하는 이벤트를 추적하고 디버깅할 때 매우 유용합니다. 여러 모듈에서 로깅을 사용하면 코드가 효과적이고 유지보수가 용이해집니다.
위치 및 모듈에 상관없이 로그 기록을 통합하는 것은 용이하지 않습니다. 우리는 많은 모듈로 구성된 대형 애플리케이션을 다룰 때 많은 계층을 거쳐야 합니다. 이런 모듈은 각각의 로깅 설정을 가질 수 있습니다. 로그 수준, 메시지 형식, 저장 폴더 및 대상 등을 구성하는 로깅 어댑터를 공유할 수 있습니다.
두 개 이상의 로거를 사용하여 로깅을 구성하는 것이 가장 좋습니다. 해당 로그 레벨의 로거를 사용하여 대상 로그 대상을 찾거나 실제 중요성에 따라 로거의 로그 레벨을 조정 할 수 있습니다. 로깅 환경을 쉽게 구성하고 모듈에서 로거 객체를 구성하면 애플리케이션 전체에 걸쳐 로그를 통합하고 관리 할 수 있습니다.
한마디로, 각 모듈에서 로깅을 사용하여 코드를 유지보수하고 디버깅하는 것은 매우 중요합니다. 모듈 사이의 로그 기록은 통합 된 로깅 설정을 사용하여 쉽게 구성 할 수 있습니다. 이렇게하면 유지 보수 및 디버깅이 더욱 용이해지며 애플리케이션의 전체 로그를 관리 할 수 있습니다.