Pythonでソースファイル名と行番号を記録する方法


Answers

Sebの非常に便利な答えの上に、合理的なフォーマットでロガーの使い方を示す簡単なコードスニペットがあります:

#!/usr/bin/env python
import logging

logging.basicConfig(format='%(asctime)s,%(msecs)d %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s',
    datefmt='%d-%m-%Y:%H:%M:%S',
    level=logging.DEBUG)

logger = logging.getLogger('stackoverflow_rocks')
logger.debug("This is a debug log")
logger.info("This is an info log")
logger.critical("This is critical")
logger.error("An error occurred")

この出力を生成します。

06-06-2017:17:07:02,158 DEBUG    [log.py:11] This is a debug log
06-06-2017:17:07:02,158 INFO     [log.py:12] This is an info log
06-06-2017:17:07:02,158 CRITICAL [log.py:13] This is critical
06-06-2017:17:07:02,158 ERROR    [log.py:14] An error occurred
Question

Pythonの標準的なロギングシステムを装飾/拡張することができるので、ロギングメソッドが呼び出されたときに、ファイルとそれが呼び出された行番号、またはそれを呼び出したメソッドも記録するでしょうか?