擅长:python、mysql、java
<p>模块很难获取,但您可以有文件名和行号。它们包含在exc\u信息中,您不需要自己格式化。您只需将它们传递给log函数,并使用格式化程序来显示它们。下面是一个示例代码,让您了解如何做到这一点:</p>
<pre><code>import sys
import logging
import traceback
def log_except_hook(*exc_info):
logger = logging.getLogger(__name__)
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter('%(asctime)s %(fname)s:%(lnum)s %(message)s %(exc_info)s'))
logger.addHandler(handler)
frame = traceback.extract_tb(exc_info[2])[-1]
fname = frame.filename
lnum = frame.lineno
logger.critical("Unhandled exception:", exc_info=exc_info, extra={'fname':fname, 'lnum':lnum})
sys.excepthook = log_except_hook
</code></pre>