名前付きの子ロガーを作成して、そのロガーによって出力されるすべてのログがその名前でマークされるようにすることができます。そのロガーは、関数/クラス/その他でのみ使用できます。
ただし、そのコードが、ロギング モジュール関数 (ルート ロガーへのプロキシ) のみを使用してロギングを利用する別のモジュールの関数を呼び出す場合、これらのログ メッセージが同じロガーを通過するようにするにはどうすればよいですか (または少なくとも同じようにログインします)?
例えば:
main.py
import logging
import other
def do_stuff(logger):
logger.info("doing stuff")
other.do_more_stuff()
if __name__ == '__main__':
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("stuff")
do_stuff(logger)
other.py
import logging
def do_more_stuff():
logging.info("doing other stuff")
出力:
$ python main.py
INFO:stuff:doing stuff
INFO:root:doing other stuff
両方のログ行に「stuff」という名前を付けて、main.py を変更するだけでこれを実行できるようにしたいと考えています。
そのモジュールを変更せずに、other.py のロギング呼び出しで別のロガーを使用するにはどうすればよいですか?