質問: logging.getLogger() # ここで何らかの設定/記述をする? logger.debug('rotate test @funcs.py') ```
回答: `funcs.py`の方は何もしなくてもいいはずです。`funcs.py`で何かの設定をすると別のロガー・オブジェクトになるので、同じログファイルに出力しようとすると`PermissionError: [WinError 32]`になります。 ・公式ドキュメント logging --- Python 用ロギング機能 ロガーオブジェクト > > ロガーを直接インスタンス化することはできず、常にモジュール関数 logging.getLogger(name) を介してインスタンス化することに注意してください。同じ name で getLogger() を複数回呼び出すと、常に同じロガー・オブジェクトへの参照が返されます。 > > > name は foo.bar.baz のようにピリオドで分割された (ただし単なるプレーンな foo もありえます) 潜在的に階層的な値です。階層リスト中でより下位のロガーは、上位のロガーの子です。例えば、foo という名前を持つロガーがあるとき、foo.bar, foo.bar.baz, foo.bam という名前を持つロガーはすべて foo の子孫です。ロガー名の階層は Python パッケージ階層と類似していて、推奨される構築方法 `logging.getLogger(__name__)` を使用してロガーをモジュール単位で構成すれば、Python パッケージ階層と同一になります。これは、モジュールの中では `__name__` が Python パッケージ名前空間におけるモジュール名だからです。 > > >