Pythonで複数のモジュールからログを出力する場合、それらを一つのファイルにまとめることができます。以下にその手順を説明します。
メインモジュールのログ出力設定
まず、メインモジュールでロガーを作成します。このロガーは、他のモジュールでも使用します。
import logging
import sub_module
# ロガー(loggingSample)の作成
logger = logging.getLogger('loggingSample')
logger.setLevel(logging.DEBUG)
# ファイルハンドラーの作成とログレベルの設定
fh = logging.FileHandler('app.log')
fh.setLevel(logging.DEBUG)
# フォーマッターの作成
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
# ハンドラーの追加
logger.addHandler(fh)
サブモジュールのログ出力設定
次に、サブモジュールでロガーを作成します。このロガーは、メインモジュールで作成したロガーに基づいています。
import logging
# ロガーの作成
module_logger = logging.getLogger('loggingSample.sub_module')
class Sample:
def __init__(self):
self.logger = logging.getLogger('loggingSample.sub_module.Sample')
self.logger.info('Sample クラスのインスタンスを生成しました')
def do_something(self):
self.logger.info('do_something が呼び出されました')
def some_function():
module_logger.info('some_function が呼び出されました')
これらの設定により、メインモジュールとサブモジュールの両方からのログが一つのファイルに出力されます。これにより、アプリケーション全体のログを一元管理することが可能になります。