|
|
@@ -43,14 +43,6 @@ async fn main() {
|
|
|
// 日志级别配置
|
|
|
let _guard = log_level_init(params.log_level.clone(), params.port.clone(), params.account_name.clone());
|
|
|
info!("配置读取成功:{:?}。", params);
|
|
|
- // panic错误捕获
|
|
|
- let account_name_clone = params.account_name.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);
|
|
|
- send_remote_err_log(msg);
|
|
|
- }));
|
|
|
// 主进程控制
|
|
|
let running = Arc::new(AtomicBool::new(true));
|
|
|
// ws退出程序
|
|
|
@@ -59,8 +51,19 @@ async fn main() {
|
|
|
let quant_arc = quant_libs::init(params.clone(), ws_running.clone(), running.clone()).await;
|
|
|
// 初始化中控服务
|
|
|
server::run_server(params.port.clone(), running.clone(), quant_arc.clone());
|
|
|
- // 退出检查程序
|
|
|
- let running = control_c::exit_handler(running);
|
|
|
+ // ctrl c退出检查程序
|
|
|
+ control_c::exit_handler(running.clone());
|
|
|
+
|
|
|
+ // panic错误捕获,panic级别的错误直接退出
|
|
|
+ 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);
|
|
|
+ send_remote_err_log(msg);
|
|
|
+ panic_running.store(false, Ordering::Relaxed);
|
|
|
+ }));
|
|
|
|
|
|
// 每一秒检查一次程序是否结束
|
|
|
while running.load(Ordering::Relaxed) {
|