1

我正在尝试使用 python 的日志记录模块建立一个包含多层信息的异常处理机制,以向用户显示我的应用程序。

在应用程序中,日志记录模块有 2 个处理程序:一个用于保存 DEBUG 信息的文件处理程序和一个用于保存 INFO 信息的流处理程序。默认情况下,日志记录级别设置为 INFO。我想要实现的是一个设置,如果发生任何异常,默认情况下会向用户显示一个简单的错误消息,没有任何回溯。如果日志级别设置为 DEBUG,用户仍然应该收到简单消息,但是这次异常回溯通过文件处理程序记录到日志文件中。

有可能实现这一目标吗?

我尝试使用logger.exception(e),但它总是将回溯打印到控制台上。

4

2 回答 2

2

traceback模块可能会对您有所帮助。在您的应用程序的顶层,您应该放置一条 catch all 语句:

setup_log_and_other_basic_services()
try:
    run_your_app()
except Exception as e:
    if is_debug():
        traceback.print_stack()
    else:
        traceback.print_stack(get_log_file())
    print e

不应允许 try/catch 块之外的代码崩溃。

于 2012-04-08T07:18:57.437 回答
0

编写您的自定义异常处理函数,并在每次编写 catch 时使用它。

在这个函数中,您应该检查哪个模式处于打开状态(INFO 或 DEBUG),然后提取有关异常的信息并在需要时将其手动提供给记录器。

于 2012-04-08T06:55:27.030 回答