我正在尝试使用python的日志记录模块,为我的应用程序显示一个包含多层信息的异常处理机制。
在应用程序中,日志记录模块有2个处理程序:用于保存DEBUG信息的文件处理程序和用于保留INFO信息的流处理程序。默认情况下,日志记录级别设置为INFO。我想要实现的是一种设置,如果发生任何异常,用户会在没有任何回溯的情况下显示简单的错误消息。如果日志记录级别设置为DEBUG,则用户仍应获取简单消息 ,但这次异常回溯通过文件处理程序记录到日志文件中。
有可能实现这个目标吗?
我尝试使用logger.exception(e)
,但它总是将回溯打印到控制台上。
答案 0 :(得分: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块之外的代码崩溃。
答案 1 :(得分:0)
编写自定义异常处理函数,并在每次编写catch时使用它。
在此功能中,您应该检查哪个模式(INFO或DEBUG),然后提取有关异常的信息并在需要时手动将其提供给记录器。