我正在将Python异常消息打印到日志(log)文件中,其中包含logging.error条:

import logging
try:
    1/0
except ZeroDivisionError as e:
    logging.error(e)  # ERROR:root:division by zero

除了异常字符串之外,是否可以打印有关异常和生成异常的代码的更详细信息?像行号或堆栈跟踪这样的东西会很棒.

推荐答案

logger.exception将在错误消息旁边输出堆栈跟踪.

例如:

import logging
try:
    1/0
except ZeroDivisionError:
    logging.exception("message")

输出:

ERROR:root:message
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ZeroDivisionError: integer division or modulo by zero

@Paulo Cheque注意到,"请注意,在Python3中,您必须仅在except部分内调用logging.exception方法.如果您在任意位置调用此方法,您可能会得到一个奇怪的异常.文档会提醒您这一点."

Python相关问答推荐

Chatgpt API不断返回错误:404未能从API获取响应

分组数据并删除重复数据

如何根据日期和时间将状态更新为已过期或活动?

使用LineConnection动画1D数据

Python在tuple上操作不会通过整个单词匹配

根据条件将新值添加到下面的行或下面新创建的行中

如何避免Chained when/then分配中的Mypy不兼容类型警告?

将两只Pandas rame乘以指数

Excel图表-使用openpyxl更改水平轴与Y轴相交的位置(Python)

为什么以这种方式调用pd.ExcelWriter会创建无效的文件格式或扩展名?

如何使用表达式将字符串解压缩到Polars DataFrame中的多个列中?

将输入聚合到统一词典中

Python Tkinter为特定样式调整所有ttkbootstrap或ttk Button填充的大小,适用于所有主题

Pandas:计算中间时间条目的总时间增量

在代码执行后关闭ChromeDriver窗口

在numpy数组中寻找楼梯状 struct

python的文件. truncate()意外地没有截断'

如何防止html代码出现在quarto gfm报告中的pandas表之上

为什么按下按钮后屏幕的 colored颜色 保持不变?

Numpy`astype(Int)`给出`np.int64`而不是`int`-怎么办?