2017-11-25 4 views
0

docsとton SOの回答などによると、複数のモジュール間でロギングを行うには "すべて行う必要があります"というのはメインファイルにロガーを設定してからlogger = logging.getLogger(__name__)ログレベルが他のモジュールに持ち越されていない

しかしこれは正しくありません。そうすれば、ロギングレベルは引き継がれないので、logger.setLevel(...)を持つすべてのファイルに追加の行が必要になります。簡単な例:私はtest.pyを実行する場合

test.py

import logging 
from test2 import bla 

logging.basicConfig() 
logger = logging.getLogger(__name__) 
logger.setLevel(logging.INFO) 

def main(): 
    logger.info('main info') 
    bla() 

main() 

test2.py

import logging 

logger = logging.getLogger(__name__) 

def bla(): 
    logger.info('info') 
    logger.debug('debug') 

test2.pyから何も印刷されません。

最初の設定で何か他にもありますか?

答えて

1

何も印刷されない理由は、ルートロガーのレベルを設定していないため、デフォルトでWARNINGになります。 logging.basicConfig(level=logging.DEBUG)と交換すると、INFODEBUGというメッセージがtest2.pyから届くはずです。

関連する問題