2017-06-08 5 views
0

私はコンソールにログすることになっているシンプルなフラスコのアプリを持っています。私の問題は、コンソールに2回ロギングしていることです。python logger logginを2回

私は、ロギングの設定を次のようしている。

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) 

コンソール出力:

print(len(root.handlers)) 

私はあなたがより多くを持っていると思います:

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 loggerを止めたい。 – wayfare

+0

werkzeugは時々デフォルトのロガーを使用しています(google up) –

答えて

1

rootがありますどのように多くのハンドラを決定するようにしてくださいをハンドラ。

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

あなたはロガーからのすべてのハンドラを削除することができます:この他のハンドラが存在しない場合は、ハンドラを追加することができないようにするには

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

はい、削除された追加のハンドラが添付されていました。ありがとう! – wayfare