2013-02-01 2 views
2

파이썬 logging 모듈을 사용자 지정 코드로 바꾸려고합니다.하지만 basicConfig 메서드를 호출해야하는 위치를 결정할 수 없습니다.Python 프로젝트에서 logging.basicConfig를 언제 호출해야합니까?

서브 모듈이있는 mymodule 모듈을 개발하면 에 한 번만 basicConfig을 호출하는 것이 좋습니다. I (또는 다른 사람이) 자신의 모듈이나 프로그램에 mymodule을 사용하고 logging 모듈을 사용하고자하는 경우

, 그들은 basicConfig에게 자신을 호출 할 수 없습니다 및 mymodulebasicConfig에게 주어진 옵션이 붙어있다.

나는 그것을 해결하기위한 해킹이 있다는 것을 알고있다. 그러나 basicConfig을 사용하는 올바른 방법은 무엇입니까?

답변

2

프로그램 시작 코드에서 호출하십시오. 바람직하게는 __name__ == '__main__' 시험에서 트리거 :

if __name__ == '__main__': 
    import sys 

    main(sys.argv) 

하고 해당 로깅 구성을 포함한 주요 기능으로 모듈 - 더 - 라이브러리의 일부가해야 할 모든 것을 넣어.

+0

당신이 맞다고 생각합니다. 그 방법으로 볼 때 단점은 모듈화 된 로깅을보기 위해 모듈이 로깅을 사용한다는 것을 사용자가 알아야한다는 것입니다. 예를 들어 모듈의 객체에 대한 디버그 인수를 갖는 것보다 더 많은 지식이 필요할 수 있습니다. –

+0

모듈 내부에 쓰는 것이 완전히 잘못 되었습니까? if len (logging.root.handlers) == 0 : logging.basicConfig() –

+0

라이브러리 로깅을 설정하지 마십시오. 어떤 로깅 구성을 문서로 만들지는 모르지만 라이브러리를 사용하여 응용 프로그램에 그대로 두십시오. 예를 들어, ['sqlalchemy' 라이브러리가 문서화하는 방법] (http://docs.sqlalchemy.org/en/rel_0_8/core/engines.html#configuring-logging)을보십시오. 어쨌든 로깅을 구성하는 것이 항상 적절한 것은 아닙니다. –

관련 문제