したがって、コマンドライン python から次のコードを実行しています。
import logging
rootLog = logging.getLogger(__name__)
rootLog.setLevel(logging.INFO)
rootLog.warning("This is a root warning")
rootLog.info("This is root info")
def info():
log = rootLog.getChild("info")
log.info("This is info")
log.warning("This is a warning")
info()
コンソールに 4 つのログ メッセージがすべて表示されることを期待していますが、表示されるのは警告だけです。何が起こっている?私は何か誤解していますか?
編集:
スクリプトの先頭に logging.basicConfig() を追加すると、期待どおりの出力が得られることがわかりました。これは奇妙です。なぜなら、Python のロギングに関するドキュメントには次のように記載されているからです。
ルート ロガーに対してハンドラーが定義されていない場合、関数
debug()
、info()
、warning()
、error()
およびcritical()
が自動的に呼び出されます。basicConfig()