gpt4 book ai didi

logging - 从 Rust 中的钩子(Hook) panic 中检索回溯?

转载 作者:行者123 更新时间:2023-11-29 07:57:09 25 4
gpt4 key购买 nike

我的应用程序需要通过 stdout 将日志以 JSON 格式发送到 fluentd。
当我尝试处理 panics 并将 &std::panic::PanicInfo 安排为带有 std::panic::set_hook 的 JSON 时,我找不到从 &PanicInfo 中检索 backtrace 的方法。

有没有办法从自定义 Hook 中的 panic 中检索回溯?

最佳答案

PanicInfo 不包含回溯,但您可以自己在 panic hook 中捕获它。

来自set_hook文档:

Registers a custom panic hook, replacing any that was previously registered.

The panic hook is invoked when a thread panics, but before the panic runtime is invoked. As such, the hook will run with both the aborting and unwinding runtimes. The default hook prints a message to standard error and generates a backtrace if requested, but this behavior can be customized with the set_hook and take_hook functions.

由于 panic hook 在展开之前运行,您可以使用 backtrace 在 panic hook 中自己捕获回溯。 @hellow 已经提到的 crate :

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com