Pythonの標準ロギングシステムを拡張して、ロギングメソッドが呼び出された場所(ファイル名と行番号)をログに記録する方法について説明します。
ロギングの設定
まず、ロギングの設定を行います。以下のコードは、ログメッセージのフォーマットを設定し、ログレベルをDEBUGに設定します。
import logging
logging.basicConfig(
format='%(asctime)s,%(msecs)03d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s',
datefmt='%Y-%m-%d:%H:%M:%S',
level=logging.DEBUG
)
この設定では、ログメッセージは次の形式で出力されます: [日時] [ファイル名:行番号] [ログレベル] メッセージ
。
ロギングの使用
次に、ロギングを使用する例を示します。
logger = logging.getLogger(__name__)
logger.debug("This is a debug log")
logger.info("This is an info log")
logger.critical("This is critical")
logger.error("An error occurred")
このコードを実行すると、各ログメッセージとともに、そのメッセージが出力されたソースファイルの名前と行番号がログに記録されます。
注意点
この方法では、ログ出力用のクラス内で実行したログ出力処理の行番号とファイル名が出力されます。したがって、ログ出力を行う各関数やメソッドでロガーを個別に設定する必要があります。
以上が、Pythonのロギングシステムを使用して、ログメッセージとともにファイル名と行番号を出力する方法です。これにより、問題が発生した場合でも、その原因を特定しやすくなります。