|
|
@@ -8,6 +8,37 @@ mod strategy;
|
|
|
mod exchange;
|
|
|
mod api;
|
|
|
|
|
|
-fn main() {
|
|
|
- println!("Hello, world!");
|
|
|
+use backtrace::Backtrace;
|
|
|
+use std::sync::Arc;
|
|
|
+use std::sync::atomic::{AtomicBool, Ordering};
|
|
|
+use tracing::{info, warn};
|
|
|
+use utils::log_setup;
|
|
|
+use tokio::sync::Mutex;
|
|
|
+
|
|
|
+#[tokio::main]
|
|
|
+async fn main() {
|
|
|
+ let _guards = log_setup::setup_logging().unwrap();
|
|
|
+
|
|
|
+ // 主进程控制
|
|
|
+ let running = Arc::new(AtomicBool::new(true));
|
|
|
+
|
|
|
+ // panic错误捕获,panic级别的错误直接退出
|
|
|
+ let panic_running = running.clone();
|
|
|
+ std::panic::set_hook(Box::new(move |panic_info| {
|
|
|
+ let msg = format!(
|
|
|
+ "type=panic, msg={:?}, location={:?}",
|
|
|
+ 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);
|
|
|
+ }));
|
|
|
+
|
|
|
+ info!("测试完成");
|
|
|
}
|