logger 怎么追踪报错行号的
时间: 2023-11-28 18:48:29 浏览: 19
在 Python 中,可以使用 `logging` 模块来记录日志信息,包括错误信息。通过设置日志记录的级别,可以记录不同级别的错误信息。如果想要追踪报错的行号,可以在日志中记录堆栈信息。可以在配置 logger 时,设置 `format` 参数为包含 `%s` 的字符串,例如:
```python
import logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s - %(pathname)s - %(lineno)d')
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
logger.addHandler(ch)
def foo():
try:
1 / 0
except Exception as e:
logger.error(str(e), exc_info=True)
foo()
```
在这个例子中,我们定义了一个 logger 并设置日志级别为 DEBUG,同时设置了一个控制台输出的 handler。在 `formatter` 中,我们设置了包含 `%s`、`%(pathname)s` 和 `%(lineno)d` 的格式字符串。在 `foo` 函数中,我们故意引发了一个除以零的异常,并在 `except` 块中调用 `logger.error` 方法记录错误信息,通过 `exc_info=True` 参数记录完整的堆栈信息。
当程序运行时,控制台输出的日志信息将包含错误的文件名和行号。例如:
```
2021-10-16 11:32:26,210 - __main__ - ERROR - division by zero - example.py - 14
```
阅读全文