目前项目里采用 flask 框架做服务,用 teardown_request 做了一个简单的全局接口请求完成后的处理,示例代码如下
def teardown_request(exception):
    db_session = g.get("pg_db")
    if db_session:
        db_session.close()
    if exception is not None:
        logging.warn(exception)
在 teardown 钩子函数里获取了一个 exception,但是打印的时候只会显示异常的信息。想要打印完整堆栈信息的时候应该怎么处理。traceback 模块结合 try catch 挺好用的,这种场景好像和直接打印效果一样,并没有完整的堆栈,如果我想要获取 exception 这个对象的完整堆栈的话需要怎么弄,求助各位大佬。
|      1chenqh      2021-05-27 17:10:14 +08:00 logging.warn(exception,exc_info=True) | 
|      2chenqh      2021-05-27 17:11:34 +08:00 @chenqh 或者使用第三方库, 比如 stackprinter ``` from stackprinter import formatting logging.info(formatting.format_exc_info(*exc_info, truncate_vals=1000)) ``` 或者用 better_exceptions | 
|  |      4Wincer      2021-05-27 17:39:12 +08:00 logging.warn 替换成 logging.exception 即可,或者像 1 楼说的 | 
|  |      5RandomAccess      2021-05-27 17:56:50 +08:00 via iPhone  1 from trackback import format_exc logger.error(format_exc()) | 
|  |      6whnoob OP |