|
|
@@ -7,6 +7,7 @@ use std::str::FromStr;
|
|
|
use std::sync::Arc;
|
|
|
use std::sync::atomic::{AtomicBool, Ordering};
|
|
|
use std::time::Duration;
|
|
|
+use backtrace::Backtrace;
|
|
|
use tokio::sync::Mutex;
|
|
|
use tracing::{error, info, warn};
|
|
|
use tracing_appender_timezone::non_blocking::WorkerGuard;
|
|
|
@@ -137,9 +138,19 @@ async fn main() {
|
|
|
let account_name_clone = params.account_name.clone();
|
|
|
let panic_running = running.clone();
|
|
|
std::panic::set_hook(Box::new(move |panic_info| {
|
|
|
- let msg = format!("account={}, type=panic, msg={:?}, location={:?}",
|
|
|
- account_name_clone, panic_info.to_string(), panic_info.location());
|
|
|
- warn!("{}", msg);
|
|
|
+ let msg = format!(
|
|
|
+ "account={}, type=panic, msg={:?}, location={:?}",
|
|
|
+ account_name_clone,
|
|
|
+ panic_info.to_string(),
|
|
|
+ panic_info.location()
|
|
|
+ );
|
|
|
+
|
|
|
+ // 生成并格式化完整的堆栈跟踪
|
|
|
+ let backtrace = Backtrace::new();
|
|
|
+ let stack_trace = format!("{:?}", backtrace);
|
|
|
+
|
|
|
+ // 一并打印堆栈跟踪
|
|
|
+ warn!("{}\nStack Trace:\n{}", msg, stack_trace);
|
|
|
panic_running.store(false, Ordering::Relaxed);
|
|
|
}));
|
|
|
|