2016-09-02 7 views
0

나는 테스트 프레임 워크에서 일하고있다. 각 테스트는 새로운 파이썬 다중 처리 프로세스로 시작됩니다. 하나의 마스터 로그 파일과 각 테스트에 해당하는 개별 로그 파일이 있습니다. 프레임 워크 코드 시작시 생성 된 마스터 로거와 각 테스트 프로세스에서 생성 된 새로운 로거가 있습니다. 테스트 로거는 자체 ​​로그 파일과 마스터 로그 파일 모두에 로그를 기록합니다.파이썬 프로세스 로깅을 기반으로 다른 파일에 로그온하는 방법은 무엇입니까?

테스트에서 사용할 수있는 라이브러리가 여러 개 있습니다.
현재 라이브러리 기능에서 로깅이 수행되지 않습니다. 라이브러리 함수에 로깅을 추가하려면 로거 객체를이 라이브러리 함수의 매개 변수로 전달해야합니다. 이를 위해 라이브러리 모듈과 함수 호출의 모든 함수 서명을 수정해야하며 이는 실용적이지 않습니다.

모듈 수준 로거가 각 테스트 프로세스가 아닌 각 모듈마다 다른 파일에 기록되므로 모듈 수준 로거를 사용할 수 없습니다.

함수에서 로그 객체를 전달할 필요가없는 해결책을 제안 할 수 있으며 로그 명령문은 함수를 호출하는 프로세스에 따라 올바른 파일에 기록됩니까?

답변

0

모듈에는 get_ident 회원이 있으며 일부 로거 사전 색인 생성에 사용할 수 있습니다.

from threading import get_ident 

loggers[get_ident()].logError('blah blah blah') 

그러나 라이브러리 전체에 이러한 모든 테스트 로깅을 설정하면 어떻게하면 프로덕션 성능에 영향을 줍니까?

관련 문제