2014-04-19 3 views
0

이상한 문제가 있습니다. logging.config를 사용하여 내 로거가 sockethandler를 사용하도록 설정하고 있습니다. 2/10 + 모듈은 아무것도 로깅하지 않는 것 외에는 모든 것이 잘 작동합니다. 괜찮 으면, 나는 두 가지를 제외한 모든 것을 로그 서버에 출력한다는 것을 의미합니다. 그것은 너무 이상해서 다른 사람들이 아닌 다른 사람들에게는 효과적입니다.일부 모듈에서는 파이썬 sockethandler 로깅이 작동하지 않습니다.

import logging 
import logging.config 

logging.config.fileConfig(config.main_log_conf) 
logger = logging.getLogger("CAKE") 

내가 문제가 위, 따라서 케이크를 로거 이름을 충돌했습니다 수 있다고 생각하지만, 작동하지 않았다 : 나는 다음과 같은 라인의 모든 모듈에 대한 로거를 초기화하고 있습니다.

아래는 내가 사용하고있는 conf 파일입니다.

[loggers] 
keys=root 

[handlers] 
keys=socketHandler 

[formatters] 
keys=simpleFormatter 

[logger_root] 
handlers=socketHandler 
level=DEBUG 

[handler_socketHandler] 
class=handlers.SocketHandler 
level=DEBUG 
formatter=simpleFormatter 
args=('localhost', handlers.DEFAULT_TCP_LOGGING_PORT) 

[formatter_simpleFormatter] 
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s 
datefmt= 
+0

귀하의 의견에서 "프로세스 (하위 프로세스가 아님)"란 무엇을 의미합니까? 하위 프로세스 *는 * 프로세스이며 프로세스가 시작한 모든 프로세스는 하위 프로세스입니다. –

+0

의미 다중 프로세스에서 프로세스 사용 – postelrich

답변

0

모든 모듈에서 fileConfig()으로 전화하지 마십시오. 일반적으로 if __name__ == '__main__' 절에서 호출 된 프로그램 (프로세스)에서 로깅 구성을 설정하는 호출이 하나만 있어야합니다. 또한 일반적으로 disable_existing_loggers=FalsefileConfig으로 전달해야합니다 (이전 버전과의 호환성을 위해 기본값은 True). 자세한 내용은 here을 참조하십시오.

+0

주 프로세스에서 시작된 프로세스 (하위 프로세스가 아님)가 fileconfig를 호출해야합니까? – postelrich

+0

disable_existing_loggers = False로 설정하면 파이썬 모듈에서 많은 디버그 로깅이 인쇄를 시작합니다 ... 이상한 – postelrich

관련 문제