package main import ( "log" "os" "os/signal" "syscall" "xttbinlog/config" "xttbinlog/syncer" "gopkg.in/yaml.v2" ) func main() { // 读取配置 cfg, err := loadConfig("config.yaml") if err != nil { log.Fatalf("加载配置失败: %v", err) } // 创建数据同步器 syncer, err := syncer.NewDataSyncer(cfg) if err != nil { log.Fatalf("创建同步器失败: %v", err) } // 处理信号 setupSignalHandler(syncer) // 启动同步 if err := syncer.Start(); err != nil { log.Fatalf("启动同步失败: %v", err) } } // loadConfig 从文件加载配置 func loadConfig(filename string) (*config.Config, error) { data, err := os.ReadFile(filename) if err != nil { return nil, err } var cfg config.Config err = yaml.Unmarshal(data, &cfg) if err != nil { return nil, err } return &cfg, nil } // setupSignalHandler 设置信号处理 func setupSignalHandler(syncer *syncer.DataSyncer) { sigChan := make(chan os.Signal, 1) signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM) go func() { sig := <-sigChan log.Printf("接收到信号: %v", sig) syncer.Stop() os.Exit(0) }() }