1
logging.Logger
で提供されるAPIを使用してロガーを設定すると、b.py
のように既存のロガーが設定されます。 logging.config.dictConfig()
でログを構成しても、既存のロガーはa.py
のように構成されません。logging.config.dictConfig()が既存のロガーに影響を与えない点は何ですか?
*.py
ファイル
~/bar
▶ tail -n +1 *.py
==> a.py <==
import logging
from logging.config import dictConfig
logger = logging.getLogger(__name__)
logging_config = dict(
version = 1,
handlers = {
'h': {'class': 'logging.StreamHandler'}
},
root = {
'handlers': ['h'],
'level': logging.DEBUG
}
)
dictConfig(logging_config)
logger.debug("This is a test")
==> b.py <==
import logging
logger = logging.getLogger(__name__)
logging.getLogger().setLevel(logging.DEBUG)
logging.getLogger().addHandler(logging.StreamHandler())
logger.debug("This is a test")
I/O
~/bar
▶ python -m a
~/bar
▶ python -m b
This is a test
ライブラリがlogging.config.dictConfig()
前ロガーが設定されて作成した場合、ロガーが適切に設定されることはありません。ライブラリはこれをどのように扱いますか?彼らはロギング設定がそれらに渡されることを期待していますか?インポート中にロガーを作成しないでください。