2017-06-08 33 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