내가 foo.modules라는 그룹을 사용하여 진입 점을 반복 처리하는 응용 프로그램 foo는이 부모 로깅 네임 스페이스를 존중합니다. 그런 다음 load() 메소드를 사용하여 어커런스를로드합니다. 이 아키텍처는 응용 프로그램에 대한 플러그인/모듈 작성을 허용합니다. foo 자세한 내용은 here에서 찾을 수 있습니다.어떻게
또한 응용 프로그램은 시작할 때 일부 로깅 처리기를 구성합니다. 나는 그러나 플러그인을로드 할 때 foo는 애플리케이션의 로깅 네임 스페이스는이 같은 경고에 이르게하는 네임 스페이스 계층 구조에서 사용할 수 없습니다 (의이 foo_plugin
을 가정 해 봅시다) :
No handlers could be found for logger "foo_plugin.plugin"
개념 누구가를 기록한다는 것입니다 플러그인은 쓸 수 있습니다 :
import logging
logger = logging.getLogger(__name__)
및 플러그인 로깅은 foo는 응용 프로그램의 지시로 작동합니다. 내가 명시 적으로 __name__
변수 전에 foo는 네임 스페이스 (foo.
)를 앞에 추가하면
는, 로깅이 다시 작동하지만,이 과정의 매우 우아하지 않습니다. 더 좋은 아이디어?
그들은 .. 당신이 옳다고 생각하지 않습니다. 진입 점을 실험하기 전에 _foo_ 로거를 기리는 _foo_ 내부의 하위 패키지에서 플러그인을로드하고있었습니다. 그 때문에 플러그인이 너무 잘못되어야한다고 생각하게되었습니다. – tasos