main.rs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. mod control_c;
  2. mod server;
  3. pub mod db_connector;
  4. mod msv;
  5. mod trades;
  6. mod params_utils;
  7. mod symbol_filter;
  8. mod depth;
  9. use std::sync::Arc;
  10. use std::sync::atomic::{AtomicBool, Ordering};
  11. use std::time::Duration;
  12. use tracing::{info, warn};
  13. use tracing_appender_timezone::non_blocking::WorkerGuard;
  14. // 日志级别配置
  15. fn log_level_init(log_str: String, port: u32, app_name: String) -> WorkerGuard {
  16. info!("日志级别读取成功:{}。", log_str);
  17. global::log_utils::final_init(log_str.as_str(), port, app_name)
  18. }
  19. #[tokio::main(flavor = "multi_thread")]
  20. async fn main() {
  21. // 日志级别配置
  22. let _ = log_level_init("info".to_string(), 18888, "data-center".to_string());
  23. // 掌控全局的关闭
  24. let running = Arc::new(AtomicBool::new(true));
  25. // panic错误捕获,panic级别的错误直接退出
  26. // let panic_running = running.clone();
  27. std::panic::set_hook(Box::new(move |panic_info| {
  28. let msg = format!("type=panic, msg={:?}, location={:?}", panic_info.to_string(), panic_info.location());
  29. warn!("{}", msg);
  30. // panic_running.store(false, Ordering::Relaxed);
  31. }));
  32. // 初始化数据服务器
  33. server::run_server(18888, running.clone());
  34. // ctrl c退出检查程序
  35. control_c::exit_handler(running.clone());
  36. // 每一秒检查一次程序是否结束
  37. while running.load(Ordering::Relaxed) {
  38. tokio::time::sleep(Duration::from_secs(1)).await;
  39. }
  40. }