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

使用python的日志记录模块记录所有异常和错误

钱德元
2023-03-14
问题内容

我想检查特定背景文件中的错误,但是标准错误流由前台程序控制,并且问题中文件中的错误未显示。不过,我可以使用该logging模块并将输出写入文件。我想知道如何使用它来记录所有异常,错误及其回溯。


问题答案:

记录程序中引发的 任何 异常可能是一个坏主意,因为Python还将异常用于正常控制流。

因此,您应该只记录 未捕获的
异常。一旦有了异常对象,就可以使用记录器的exception()方法轻松地执行此操作。

要处理所有未捕获的异常,您可以将脚本的入口点包装在一个try...except块中,或者通过重新分配安装自定义异常处理程序sys.excepthook()

import logging
import sys

logger = logging.getLogger('mylogger')
# Configure logger to write to a file...

def my_handler(type, value, tb):
    logger.exception("Uncaught exception: {0}".format(str(value)))

# Install exception handler
sys.excepthook = my_handler

# Run your main script here:
if __name__ == '__main__':
    main()


 类似资料:
  • 问题内容: 我想知道如何实现一个全局记录器,该记录器可以用自己的设置在任何地方使用: 我目前有一个自定义记录器类: 该类在一个单独的文件中,其中包含一些格式化程序和其他内容。记录器可以完美地独立运行。 我将此模块导入我的主python文件中,并创建一个像这样的对象: 但显然,我无法从代码的其他部分访问此对象。我使用错误的方法吗?有一个更好的方法吗? 问题答案: 使用创建一个名为全球记录。 main

  • 我正在使用Python日志模块,并希望禁用由我导入的第三方模块打印的日志消息。例如,我使用的是如下所示: 当我执行logger.debug时,它会输出我的调试消息(“my Message!”),但它也会从我导入的任何模块中输出调试消息(如请求和许多其他东西)。 我只想看到我感兴趣的模块的日志消息。有没有可能让日志模块做到这一点?

  • 问题内容: 我正在编写一个服务器应用程序,该应用程序应该能够在控制台和日志文件上以不同级别登录。 问题是,如果设置了logging.basicConfig(),它将登录到控制台,但是必须在主线程中进行设置。 也可以使用logging.basicConfig(filename =’logger.log’)进行设置以写入文件。 设置用于控制台日志记录(logging.StreamHandler())或

  • 在将big project移植到log4j2之后,我注意到异常日志不起作用。这样的代码

  • 问题内容: 我正在使用python记录器。以下是我的代码: 我的问题是我在每个呼叫的日志文件中都有多个条目。我该如何解决? 问题答案: 该已经是一个单例。(文件) 问题在于,每次调用时,都会向实例添加另一个处理程序,这将导致日志重复。 也许像这样?

  • 问题内容: 我想使用PySide创建一个简单的应用程序,仅用于从python日志记录中输出。 我想知道: 如何重定向stdout写入QTextEdit? 如何编写logging.Handler记录到QTextEdit? 谢谢 问题答案: 这是从PyQt邮件列表复制粘贴的,但应该适用于PySide 这应该做您想要的。 用法示例: