我的应用程序需要通过stdout将日志以JSON格式流畅地发送。
当我试图处理紧急情况并使用&std::panic::PanicInfostd::panic::set_hook安排为JSON时,我找不到从&PanicInfo检索回溯的方法。

有没有一种方法可以从自定义 Hook 中的 panic 中检索回溯?

最佳答案

PanicInfo不包含回溯,但您可以自己在 panic 钩子(Hook)中捕获它。
set_hook 文档中:

由于应急钩子(Hook)在展开之前先运行,因此您可以使用@hellow已经提到的 backtrace crate 自己在应急钩子(Hook)中捕获回溯:

panic::set_hook(Box::new(|panic_info| {
    let backtrace = Backtrace::new();
    //  Do something with backtrace and panic_info.
}));

关于logging - 从Rust的钩子(Hook) panic 中检索回溯?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54917373/

10-13 03:32