3 回答
TA贡献1828条经验 获得超3个赞
这是一个完整的小示例,其中还包括其他一些技巧:
import sys
import logging
logger = logging.getLogger(__name__)
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
def handle_exception(exc_type, exc_value, exc_traceback):
if issubclass(exc_type, KeyboardInterrupt):
sys.__excepthook__(exc_type, exc_value, exc_traceback)
return
logger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback))
sys.excepthook = handle_exception
if __name__ == "__main__":
raise RuntimeError("Test unhandled")
忽略KeyboardInterrupt,以便控制台python程序可以使用Ctrl + C退出。
完全依靠python的日志记录模块来格式化异常。
将自定义记录器与示例处理程序一起使用。这将未处理的异常更改为转到stdout而不是stderr,但是您可以将具有相同样式的各种处理程序添加到logger对象。
添加回答
举报