2017-06-08 76 views
0

我有一个简单的应用程序应该登录到控制台。我的问题是,它记录了两次控制台。蟒蛇记录器登录两次

我有以下日志记录配置:

root = logging.getLogger() 
root.setLevel(logging.INFO) 
ch = logging.StreamHandler(sys.stdout) 
formatter = logging.Formatter('%(asctime)s | src="%(name)s" | lvl="%(levelname)s" | msg="%(message)s"') 
ch.setFormatter(formatter) 
ch.setLevel(logging.INFO) 
root.addHandler(ch) 
#werkzeug disable werkzeug logs 
werkzeug_logger = logging.getLogger('werkzeug') 
werkzeug_logger.setLevel(logging.ERROR) 

控制台输出:

INFO:auth:Starting oauth flow 
2017-06-08 14:16:08,494 | src="auth" | lvl="INFO" | msg="Starting oauth flow" 
+0

;对于这个问题,你使用的是哪个记录器,'root'还是'werkzeug_logger'? – chepner

+0

根。我想停止werkzeug记录器。 – wayfare

+0

werkzeug有时使用默认记录器(谷歌了) –

回答

1

试图确定有多少处理器做root有:

print(len(root.handlers)) 

我猜你有更多然后一个处理程序。为了避免这种情况,你可以,如果没有其他处理程序添加一个处理程序:

if not root.handlers: 
    root.addHandler(...) 

可以从记录中删除所有的处理程序:你是如何实际使用您的记录

for x in root.handlers.copy(): 
    root.removeHandler(x) 
+1

是的,它有一个额外的处理程序附加,我删除了,它现在按预期工作。谢谢! – wayfare