当前位置: 首页 > 面试题库 >

如何记录带有调试信息的Python错误?

戎洛华
2023-03-14
问题内容

我正在使用以下命令将Python异常消息打印到日志文件中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 Check指出:“请注意,在Python3中,您必须logging.exceptionexcept零件内部调用该方法。如果在任意位置调用此方法,则可能会遇到奇怪的异常。文档对此有所提示。”



 类似资料:
  • 对于我在Python(2.7)中的第一个日志记录实验,我正在创建一个基本的日志记录模块,它将快速为创建一个记录器(这样我就不必为每个模块/类配置它)。 我想要做的是创建一个日志程序,它在控制台上显示所有级别信息及更高级别的消息,并将所有调试级别信息移动到一个文本文件中。 到目前为止,我已经创建了一个日志程序,它打印信息直到控制台,并将每个日志消息打印到一个文本文件。然而,我不想要所有的信息和更高的

  • 问题内容: 我想使用apache log4j将日志记录添加到正在开发的应用程序中。在这一点上,我想将所有级别为INFO和更低级别(TRACE,DEBUG)的日志消息重定向到stdout,并将所有其他日志消息从WARN及更高版本(ERROR,FATAL)重定向到stderr。例如: 那么我的log4j.properties文件应该是什么?这是如何看待这一时刻的: 上面配置的问题是logger.err

  • 我正在用Soundpool开发一个Android应用程序。每次播放声音时,都会在LogCat中记录一个错误,类型为:E/SoundPool(11873):sampleid=33,leftvolume=0.779528,rightvolume=0.779528,priority=1,loop=0,rate=1.000000 这个错误是什么意思?有可能禁用这些日志吗?我想记录这些错误是相当耗时的,因为

  • #include <stdio.h> #include <pthread.h> typedef struct { int a; int b; int c; int d; pthread_mutex_t mutex; }ex_st; int main(void) { ex_st st = {1, 2,

  • #include <stdio.h> int func(void) { return 3; } int main(void) { int a = 0; a = func(); printf("%d\n", a); return 0; } 技巧 使用gdb调试遇到函数时,使用step命令(缩写为s)可以进入函数(函数必须有调试信息)。以上面代码为例:

  • 如何调试Python分段错误? 我们试图在SuSE 12.3上运行我们的python代码。我们得到了可复制的分割错误。多年来,python代码一直在其他平台上运行,没有出现分段错误。 我们只编码Python,没有C扩展.... 最好的调试方法是什么?我知道一点ansi c但那是十年前的事了... Python 2.7.5 更新 分段错误发生在解释器关闭时。 我可以多次运行脚本: 但如果我使用Ctr