2017-12-18 1 views
0
import logging 
# logging.basicConfig(level=logging.DEBUG) 
consoleHandler = logging.StreamHandler() 
consoleHandler.setLevel(logging.DEBUG) 
consoleHandler.setFormatter(logging.Formatter("%(asctime)s; %(levelname)s; %(message)s")) 
logging.getLogger().addHandler(consoleHandler) 

logging.debug('debug') 
logging.info('test') 
logging.warn('warn') 
logging.error('error') 
logging.fatal('fatal') 

私はWARN以上の最後の3つのログだけを取得しました。誰も私に教えてもらえますか?なぜこのpythonコードは、INFOよりも低いログを除外しますか?

答えて

3

ロガーのレベルではなく、ハンドラのレベルを設定します。ルートロガーのレベルは、ルートのデフォルトのWARNINGに設定されているため、WARNINGより重大ではないメッセージはハンドラに渡されません。

1

ルートロガーのため@ user2357112は、すでに述べた、設定されたレベル

logging.getLogger().setLevel(logging.DEBUG) 

としてあなたのコードは次のようになります:

import logging 
# logging.basicConfig(level=logging.DEBUG) 
consoleHandler = logging.StreamHandler() 
consoleHandler.setLevel(logging.DEBUG) 
consoleHandler.setFormatter(logging.Formatter("%(asctime)s; %(levelname)s; %(message)s")) 
logging.getLogger().addHandler(consoleHandler) 
logging.getLogger().setLevel(logging.DEBUG) 

logging.debug('debug') 
logging.info('test') 
logging.warn('warn') 
logging.error('error') 
logging.fatal('fatal')#Output 

#output 

# 2017-12-18 12:15:49,647; DEBUG; debug 
# 2017-12-18 12:15:49,648; INFO; test 
# 2017-12-18 12:15:49,648; WARNING; warn 
# 2017-12-18 12:15:49,648; ERROR; error 
# 2017-12-18 12:15:49,648; CRITICAL; fatal 
関連する問題