目前项目里采用 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 这个对象的完整堆栈的话需要怎么弄,求助各位大佬。
1
chenqh 2021-05-27 17:10:14 +08:00
logging.warn(exception,exc_info=True)
|
2
chenqh 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 |
4
Wincer 2021-05-27 17:39:12 +08:00
logging.warn 替换成 logging.exception 即可,或者像 1 楼说的
|
5
RandomAccess 2021-05-27 17:56:50 +08:00 via iPhone 1
from trackback import format_exc
logger.error(format_exc()) |
6
whnoob OP |